Unity动画过渡

来源:互联网 发布:java prototype 编辑:程序博客网 时间:2024/05/18 11:01

最近在做一个小游戏,涉及到动画的过渡,但是由于不了解过渡设置导致出现十分奇怪的结果。下面在自己的实验基础上介绍一下这些参数的具体含义。


如图,是一个从跑到滑行的过渡。假设这个过渡是从A到B。

Has Exit Time:这个意思是A在什么时候过渡到B,即A在这个时刻发生过渡的动作,你可以把它理解为一个特殊的过渡条件,类似time=exit time一样,如果有设置过渡条件,那么就是同时满足这两个条件时才发生过渡,也就是如果在exit time之前已经满足了你的条件,那么在exit time这个时刻发生过渡;否则,只能等到动画重新播放一遍,再次到达exit time的时候,才会发生过渡。如果你希望满足你的条件时候立马发生过渡,那么最好不要勾选这个选项。


Transition Offset:这个意思是A过渡到B时,B从哪里开始播放,比如你的Transition Offset为0.5,那么A过渡到B之后会从B的50%处开始播放,而不会从头开始播放。


其实Has Exit Time和Transition Offset结合使用才能达到效果,比如A是行走的动画,B是跑的动画,那么很可能出现这种情况,A在迈出左脚走的时候过渡到了B,B正好也是从左脚开始跑,那么就会出现鬼畜了,想象一下。正常应该是迈出左脚,右脚开始加速。那么你就可以控制A的exit time为左脚结束,B的Transition Offset为右脚开始,这样就完美了的过渡了。


Transition Duration:过渡的时间,这个就是字面的意思。从A动画完全到B需要多久,注意勾选了Fixed Duration,那么这个时间以秒为单位,否则的话以A的时间为基础。其实这个是用来做缓冲的,比如A为跳跃,B为站立,如果A没有落地的过程(也就是A的结尾是在空中),那么会出现播放完A到B,从空中瞬移到地面,如果设置了这个时间,那么就会有下落的过程。当然,一般情况下跳跃有上升也有下落,不会只有上升。


Interruption Source:这个其实可以理解为打断的优先级,如果大家用过any state就知道,如果满足any state到某个状态C的过渡条件,那么会立即过渡到C,此时正在播放的动画会被打断。这里就是说当前的动画可以被哪个状态打断,当然,any state的优先级永远最高,然后就是按照选项的优先级来。