使用unity原生的animator的,
直接使用最简化的animator,只把动画拖进去,通过代码控制切换
因为做动画的人,会把所有模型的动画的名字都统一。
Idle、Run、Attack01、Attack02、Attack03、Hitted、Dead
预先定义这些状态,获取每个状态的时间
通过遍历:
AnimationClip[] animationClips = this._animator.runtimeAnimatorController.animationClips;
获取到:
animationClips[0].length
比如Hitted后,需要自动回到Idle,添加一个定时任务,触发事件就是动画的时间
切换状态采用 CrossFade
this._animator.CrossFade(HASHNAME_RUN, NORMALIZED_TRANSITION_DURATION);
优化:不直接使用字符串,减少Hash次数
直接通过Animator.StringToHash,保存对应的Hash
private static readonly int HASHNAME_DEAD = Animator.StringToHash(STR_DEAD);
网友评论