U3D开发学习之路--Mecanim动画系统

Mecanim特性

  1. 针对人形角色提供了一种特殊的工作流,包含Avatar的创建和对肌肉的调节。
  2. 动画重定向的能力,可以非常方便地把动画从一个角色模型应用到其他角色模型上。
  3. 提供了可视化Animator视窗,可以直观地通过动画参数Transition(动画过渡线)等管理各个动画间的过度。

Mecanim常用

  1. Animator:Mecanim动画系统组件
  2. AnimatorController:动画控制器,控制动画逻辑
  3. Avatar:将角色的骨骼转化为可识别的一般骨骼或者人形骨骼

Mecanim一般创作步骤

1.     选择到模型源文件查看

2.     将动画模式调整为Mecanim可识别样式 (人类,动画可以复用) (非人类,动画不能复用)

Animation动画样式为

3.     Apply应用到模型

4.     (若为对勾显示则骨骼匹配成功,若为叉号显示则需要重新匹配)

5.     创建->给到角色上

6.     找到Window下Animator面板将需要的动画拖到面板中即可

需要重新匹配点击->进入此界面

找到->

动画状态机动画切换

此颜色的动画状态,说明此动画为默认动画(此处跳舞为默认动画)

1.      若想实现角色从待机切换到跳舞效果,先将待机动画拖拽到Animator面板(或者右键创建Empty,将右边属性motion选择待机动画)->将待机动画设置为默认动画(在待机动画状态右键选择 )-> 待机动画即为默认动画->在待机动画状态右键选择 ->

2.      添加动画参数

3.      选择动画过渡线设置条件

if(anim){
  anime.SetBool("AttackBool",Input.GetKeyDown(KeyCode.Space));
}


Mecanim BlendTree(混合树)

(可实现一个动画状态有多个动画效果,如跑,既可以前跑也可以左右跑)

1.  创建 BlendTree

2.  双击blendTree动画状态

3.  进入此界面,然后点击添加需要的动画->

注意:如果勾选则Threshold数值不能自己调整。

如果需要调整则取消勾选即可。

设置为,此处想通过键盘平行轴返回值控制左右跑动画,则为-1 ,0, 1。

添加AD小数,在BlendTree应用AD

Mecanim BlendTree2D

 

通过2个动画参数控制动画切换

InputWS InputAD分别对应POSX 与POSY两个数值


Mecanim层设置,用于角色动画混合效果(如:边跑边攻击)

点击此处添加层,可更改Name,通过Weight设置动画权重,Mask控制动画混合位置,并将此层需要的动画拖到面板中

注意Mask 在Project视窗创建,选择

此处为将腿遮罩,则腿不会播放dance动画,当调节Weight动画权重数值时可看到融合效果(范围从0~1),1为完全融合。

Weight 权重

      权重是指某个动画层在整个动画中的影响,

      若权重值为1则此层动画将与整个动画融合

      若权重值为0则此层动画与整个动画完全不融合

动画事件

找到角色源文件->找到需要的动画->


此脚本给在角色上,当攻击动画将要播放完时调用AttackBool();


判断动画是否在播放

Animator anim ;
	int idle = Animator.StringToHash("Base layer.Idle");//默认层的待机动画 
AnimatorStateInfo currentBaseStage;//当前播放的动画

	void Start () {
		anim = GetComponent();
	}

	void Update () {
		currentBaseStage = anim.GetCurrentAnimatorStateInfo(0);//当前播放的动画
		if (currentBaseStage.nameHash == idle && !anim.IsInTransition(0))//正在播放待机动画,并且没有动画衔接
		{
			anim.SetBool("hit", false);
		}


你可能感兴趣的:(Unity3D,Unity3D)