遇到问题:
在同一个State有多个Transition,同时转换条件所需的参数各不相同时,有无法按照预期进行转换的可能。
按照图中的animator,玩家可以在任何时间发起攻击,攻击结束后默认切换回Idle状态。
但是当玩家在空中完成攻击后,不会转到JumpUp或JumpDown,而是Walk,在空中漫步。
分析问题
在设置Idle State的多个Transition时,它们被放入队列中,也就是先创建的默认更优先。随便拉完线后是这样:
所以现在Transition的优先级为:Walk > JumpUp > JumpDown。
从Idle到Walk的条件是在水平方向有速度,JumpUp和JumpDown的条件分别是竖直方向速度的正负。
当玩家在空中移动攻击结束后,切换到Idle,不管竖直方向是否大于零,都会优先判断是否满足Walk的条件。
所以只要改变它们的优先级就可以解决问题了。
解决问题
将Walk拖到最后:
再次测试:
完美解决。