Unity Animator状态树仅向前动画生效 横向输入无法触发左右移动动画
问题排查与解决方案
- 首先确认Animator参数配置正确:检查Animator窗口中创建的float参数是否和代码里的命名完全一致,代码里设置的参数名为
horizontal和vertical,参数拼写、大小写有任何差异都会导致参数无法正常赋值,动画自然不会切换。 - 检查状态过渡条件是否配置完整:你当前只有向前动画能触发,大概率是过渡条件只判断了
vertical参数,没有加入horizontal的判断逻辑。比如左前移动的过渡需要同时满足vertical > 0.1且horizontal < -0.1,右前移动的过渡需要同时满足vertical > 0.1且horizontal > 0.1,如果要支持纯横向平移,还要补充vertical 绝对值 < 0.1且horizontal 绝对值 > 0.1的对应过渡条件。另外需要关闭过渡的「退出时间」和「固定持续时间」选项,默认开启的退出时间会等待当前动画播放到指定进度才会切换,会给人“没触发切换”的错觉。同时确认所有需要切换的状态之间都有正确的双向/单向过渡连线,不能缺少从当前状态到目标动画的过渡。 - 验证输入参数是否正常赋值:可以在Update方法中添加一行
Debug.Log($"horizontal值:{Input.GetAxis("Horizontal")},vertical值:{Input.GetAxis("Vertical")}"),运行游戏时按A/D/方向键左右,观察控制台输出的horizontal值是否会在-1到1之间正常变化:如果值变化正常,说明问题完全出在Animator状态机配置上;如果值没有变化,需要检查Unity输入管理器中Horizontal轴的配置是否被修改。 - 检查负向移动的状态配置:你提到按S键没有反应,如果是要实现向后移动的动画,需要在状态机中补充向后移动的状态,以及对应
vertical < -0.1的过渡条件,否则按S时vertical为负值,没有匹配的过渡条件自然不会切换动画。
内容的提问来源于stack exchange,提问作者Kermit
相关产品推荐
相关产品推荐

