Unity DragonBone 动画遮罩与混合
程序员文章站
2022-07-14 21:36:28
...
项目中使用了DragonBones来做2D骨骼动画,分享一下有关动画遮罩和混合的注意点。
需求:场景中有一匹马,马背上有一个持红缨枪的武士,要求马一直处于奔跑的状态,马背上的人可以播放攻击、防御动画。由于版权原因,我这里使用白鹭官方的小白人做演示吧。
1.动画片段(人物奔跑)
2.动画片段(手舞足蹈)
3.实现如下动画(混合动画)
关于动画遮罩与混合:
-
动画遮罩
动画遮罩就是只将动画的一部分呈现出来,如下代码就是控制upperbody骨骼播放Squat动画,其它骨骼维持原姿势不动。
_handAnimationState=_armatureComponent.animation.
GotoAndPlayByTime("Squat",0.1f,0);
_handAnimationState.AddBoneMask("upperbody");
-
动画混合
动画混合是指一个骨架同时可以播放多个动画,例如以下代码可以让角色一边跑步一边手舞足蹈。
//播放手部动画
_handAnimationState=_armatureComponent.animation.
GotoAndPlayByTime("Squat",0.1f,0);
_handAnimationState.layer=1;
_handAnimationState.AddBoneMask("upperbody");
//播放奔跑的动画
_legsAnimationState=_armatureComponent.animation.FadeIn("Run",0.1f,0);
_legsAnimationState.layer=0;
在DragonBones中骨骼动画在运行时有一个组的概念,我们可以让动画在一个组中播放,当另外一个动画被设置为在相同组中播放时,之前正在播放的动画就会停止,所以,为了能够同时播放动画,需要把要同时播放的动画放在不同的组中,在本示例中,将跑步的动画放到下半身组中,手舞足蹈的动画放到上半身组中,就可以实现一边跑步、一边手舞足蹈了。
完整代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DragonBones;
public class BlendAndMask : MonoBehaviour {
public UnityArmatureComponent _armatureComponent;
//手部动画状态
private DragonBones.AnimationState _handAnimationState;
//腿部动画状态
private DragonBones.AnimationState _legsAnimationState;
// Use this for initialization
void Start () {
//播放手部动画
_handAnimationState=_armatureComponent.animation.
GotoAndPlayByTime("Squat",0.1f,0);
_handAnimationState.layer=1;
_handAnimationState.AddBoneMask("upperbody");
//播放奔跑的动画
_legsAnimationState=_armatureComponent.animation.
FadeIn("Run",0.1f,0);
_legsAnimationState.layer=0;
}
}
参考《DragonBones官方文档》
更多内容,欢迎关注:
上一篇: vue与原生混合开发
下一篇: 关于java编程中,var的用法