Quantcast
Viewing all articles
Browse latest Browse all 5930

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

Mecanim特性

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

Mecanim常用

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

Mecanim一般创作步骤

1.     选择到模型源文件查看Image may be NSFW.
Clik here to view.

2.     将动画模式调整为Mecanim可识别样式 Image may be NSFW.
Clik here to view.
(人类,动画可以复用) (非人类,动画不能复用)Image may be NSFW.
Clik here to view.

Animation动画样式为Image may be NSFW.
Clik here to view.

3.     Apply应用到模型

4.     Image may be NSFW.
Clik here to view.
(若为对勾显示则骨骼匹配成功,若为叉号显示则需要重新匹配)

5.     创建Image may be NSFW.
Clik here to view.
->Image may be NSFW.
Clik here to view.
给到角色上Image may be NSFW.
Clik here to view.

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

需要重新匹配点击Image may be NSFW.
Clik here to view.
->进入此界面Image may be NSFW.
Clik here to view.

找到->Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.

动画状态机动画切换

Image may be NSFW.
Clik here to view.
此颜色的动画状态,说明此动画为默认动画(此处跳舞为默认动画)

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

2.      添加动画参数Image may be NSFW.
Clik here to view.

3.      选择动画过渡线设置条件Image may be NSFW.
Clik here to view.

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


Mecanim BlendTree(混合树)

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

1.  Image may be NSFW.
Clik here to view.
创建 BlendTree

2.  双击blendTree动画状态

3.  Image may be NSFW.
Clik here to view.
进入此界面,然后点击添加需要的动画Image may be NSFW.
Clik here to view.
->Image may be NSFW.
Clik here to view.

注意:Image may be NSFW.
Clik here to view.
如果勾选则Threshold数值不能自己调整。

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

设置为Image may be NSFW.
Clik here to view.
,此处想通过键盘平行轴返回值控制左右跑动画,则为-1 ,0, 1。

Image may be NSFW.
Clik here to view.
添加AD小数,在BlendTree应用ADImage may be NSFW.
Clik here to view.

Mecanim BlendTree2D

 Image may be NSFW.
Clik here to view.

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

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

Image may be NSFW.
Clik here to view.

Image may be NSFW.
Clik here to view.

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

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

注意Mask Image may be NSFW.
Clik here to view.
在Project视窗创建,选择Image may be NSFW.
Clik here to view.

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

Weight 权重

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

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

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

动画事件

找到角色源文件->找到需要的动画->Image may be NSFW.
Clik here to view.

Image may be NSFW.
Clik here to view.

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

Image may be NSFW.
Clik here to view.

判断动画是否在播放

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

	void Start () {
		anim = GetComponent<Animator>();
	}

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


作者:ballshe 发表于2016/9/3 16:34:33 原文链接
阅读:89 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles