Unity实现急停思路

最近我想打造一个较为丝滑的Unity动作系统,最先我想上网找个案例、跟着案例的步骤来。结果找到的案例是siki学院的,吐槽siki的动作系统做得挺答辩的,我都知道用状态机、它都不用),滑步较为严重。后来又找到鬼鬼鬼ii的Unity课程,结果收费210…在诸多阻力下,我产生大胆想法:没人教、我自己写一个不是更好吗?


先从简单开始,我们先实现最基础的功能:待机、跑步、急停。我的思路是,把待机动画和跑步动画混合在一起。做成一个混合树。混合树有好多类型,我打算采取2D混合树,把待机、向前跑、向后跑、向左跑和向右跑五个动画融合起来,做成一个2D混合树,这样待机和跑步状态就切换比较自然。

那么如何实现急停呢?我有两个思路。

思路一:调用动画事件

思路一是,我们将待机和跑步通过混合树混合在一起,在混合树合适位置加一个动画事件——动画播放到合适位置时调用事件,然后过渡到Run_Stop状态中。
我觉得这种思路不太完善,因为“合适位置加一个动画事件”是比较难把握的,看起来可能会有突兀感,于是有了思路2。

思路二:用多个混合树

思路二是创建两个混合树,混合树A是待机动画和跑步动画混合在一起,0是完全待机、1是完全跑步。混合树B是跑步动画、急停动画、待机动画混合在一起,0是完全跑步、1是急停后待机。

当状态机A时,值是1(处于完全跑步状态)、我们调用Exit方法进入B,值是0,正好承接前面的状态,我们划分一下三个状态的权重,这样切换就比较自然了。AI给我提供了新的思路,子状态机之类的,明天再想。