100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > unity-动画状态机Animator

unity-动画状态机Animator

时间:2022-07-21 16:30:34

相关推荐

unity-动画状态机Animator

unity可以用两种方式控制动画

1. Animations,这种方式简单,直接Play(“Idle”)或者CorssFade(“Idle”)就可以播放动画

2. Animator,5.x之后推荐使用这种方式,因为里面可以加上混合动画,让动画切换更加平滑

1、导入模型及动作,做成预制件(perfab)

直接把整个模型文件夹拷入对应位置,unity会自动import进来

把模型拖进场景

然后报贴图拖到模型的身上

Hierarchy中,新建一个空对象xiaoGO,把模型丢到xiaoGO作为子节点,然后把xiaoGO拖入Project中做成预制件

2、将模型骨骼转换成unity中的Humanoid

第4步点击之后,有个弹窗,点Save即可。如果转换成功Configure前面显示 v ,失败则显示 x第5步则更新相关的动画

3、添加状态机控制器

添加控制器脚本animCtrl2

为模型aisake(aisakeGO对象下的aisake节点)添加Animator组件,拖入animCtrl2Controller,选择人物镜像Avatar(转换为Humanoid之后才会出现在选择列表中)

4、编辑状态机控制器

编辑状态机控制器

双击animCtrl2,会出来一个Animator面板,拖入三个动作作为状态(第一个拖入的作为默认状态,不过可以右键Default State设置其他状态为默认状态)右键AnyStateMake Transition连接到三个状态添加状态控制参数AnimState,是个整形(一般来说用枚举,不过这里没枚举类型,但可以强转成int)

编辑切换状态的条件

点击连线,添加个条件,这个条件只会显示刚才添加的状态控制参数AnimState,设置等于0是切到这个状态

取消勾选Can Transition To Self,不然动画会出现抖动

其他两个一样,设置不同的条件即可

关于 AnyState中的Transitions,看这里 /yangxuan0261/article/details/52334359

4、代码中控制状态

加个按钮去控制,按钮脚本

public class btnCtrl : MonoBehaviour {private int mAnimIndex = 0;private int mAnimTotal = 3;void Start () {OnClicked1();}public void OnClicked1(){GameObject go1 = GameObject.Find("aisakeGO");GameObject go2 = GameObject.Find("xiaoGO");Animator ator1 = go1.GetComponentInChildren<Animator>();Animator ator2 = go2.GetComponentInChildren<Animator>();if(ator1 && ator2){//Debug.LogFormat("--- has ator1 && ator2, animIndex:{0}", mAnimIndex % mAnimTotal);ator1.SetInteger("AnimState", mAnimIndex % mAnimTotal); //设置状态控制参数值,用来切状态ator2.SetInteger("AnimState", mAnimIndex % mAnimTotal);}mAnimIndex++;}}

5、done

注意事项

动作循环。不然如果没有下个状态切换,直接停止动作

Animator中的Avater没有对应模型,那是因为没有模型没有转换成unity中的Humanoid,参照第二步

使用Animator组件后就不需要Animation组件

Has Exit Time,如果勾选了,则表示在该动作完成后才允许切换,但是一般我们要的都是立即切换,所以这里不要勾选

取消勾选Can Transition To Self,不然动画会出现抖动

参考

官方文档忘了保存了,其他的

/questions/864734/using-humanoid-animations-with-generic-avatar.html

/questions/956031/legacy-animations-and-unity-5-whats-the-deal.html

/Manual/AnimationSoloMute.html

youtube里的相关很好视频教程(能不能科学上网就看你自己了)

/watch?v=WSkI3Px20Q4

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。