Unity Animator动画的动作切换对比

分类: unity3d |
有一个功能,当子弹打到敌人身上使其血量为0时,让其播放死亡动作。
这个要求,看似很简单,
但是,实现起来的时候,会有几个问题,
如果是用
Animator
http://s4/mw690/005N7Rnmzy7eBXi0srV33&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />
http://s4/mw690/005N7Rnmzy7eBXjEf3Jf3&690Animator动画的动作切换对比" TITLE="UnityAnimator动画的动作切换对比" />
http://s4/mw690/005N7Rnmzy7eBXjEf3Jf3&690Animator动画的动作切换对比" TITLE="Unity
这种形式的话, 会有一个问题,
假如,这个行走的动作,是两秒,
当子弹打到敌人身上,至其血量为0时,此时,人物应该是播放死亡倒地动作,
但是,因为这个行走的动作,可能有时是看上去还可以,有时却感觉,
人物走着走着就死亡了,当这个人物播放死亡动作的时候,可能玩家根本没开枪,
这种方式,有时感觉有点“怪异”。
如果是想要动作切换的动作快一点,可以调节 行走的动作速度,
但是,这又造成了人物突然间速度加快的感觉,
最好是,当玩家发射的子弹打到僵尸时,死亡的那一瞬间,就开始播放死亡动作是最好的。
我们可能会用代码,强制让其直接播放 死亡动作,
功能上,可能用 Play直接来播放死亡动作,
但是,这又有一个问题,就是 动作切换的太僵硬了。
http://s9/mw690/005N7Rnmzy7eBXSXnEA98&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />
http://s5/mw690/005N7Rnmzy7eBXT3kEs54&690Animator动画的动作切换对比" TITLE="UnityAnimator动画的动作切换对比" />
http://s5/mw690/005N7Rnmzy7eBXT3kEs54&690Animator动画的动作切换对比" TITLE="Unity
上面两张图,是两种动作切换的方式,可能GIF图的录制效果看不太出来区别,
但是实际真机上,区别是非常明显的,
http://s9/mw690/005N7Rnmzy7eBY0IlvO68&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />
http://s5/mw690/005N7Rnmzy7eBY0NwTW44&690Animator动画的动作切换对比" TITLE="UnityAnimator动画的动作切换对比" />
http://s5/mw690/005N7Rnmzy7eBY0NwTW44&690Animator动画的动作切换对比" TITLE="Unity
这两种动作切换时,Animator的情况,
一种是 walk动作和deadType1都在播放,一种是只有 deadType1在播放,
区别在这里,
http://s5/mw690/005N7Rnmzy7eBY5mqr254&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />
一种切换时,用的是 Play,这种就是直接停止当前动作,转到另一个动作,
一种切换时,用的是 Play,这种就是直接停止当前动作,转到另一个动作,
一种是 CrossFade,这种是告诉Animator,将要切换到 哪个动作,用多少时间做准备,
这里,我设置的 crossFadeTime是 0.2,具体设置多少,
最好是在真机上,来回测试几次,记录下两个动作切换看上去比较自然的值,记录下来使用。
这个值是相对值,而不是绝对现实世界中的0.2秒。
经过 CrossFade切换的动作,
在视觉上,就自然的多了。