【Unity】因使用混合树而导致的奇怪Bug(已修复)

问题描述

今天使用Unity时发现:物体没有按照动画设置的参数运动

我为人物设置了攻击动画,由于人物不对称,故左右独立设置。如图是其中一段动画,其中设置了攻击区域触发器的变化动画。

应当正确显示的情况

但当我运行时,攻击区域触发器却发生了奇怪的位移,跟动画clip中的设置不一致。

运行后发现攻击触发器的位置不正确


问题排查

经过2小时的折磨,在同学的帮助下终于锁定问题关键:

03.jpg 05.jpg

我使用了 混合树 来控制人物的左右攻击,恰恰就是这个混合树出了问题。

结论就是:混合树将我的左右两个动画的攻击区域触发器的各项参数进行混合,其中就包括了触发器形状的offset!这导致两个动画各自触发器形状的offset叠加而抵消,使其最后显示的offset的x值始终在0附近


问题解决

最后简单粗暴地解决了:放弃使用混合树控制左右动画。经过检验这样是可行的。

弃用混合树

原本我使用混合树仅仅只是想优化一下拓扑结构。。。现在不能这么玩了。

我创建了子状态机,然后把攻击动画的逻辑全塞里面。。。让他看起来。。额。。至少没这么复杂(大概)。

06.jpg 07.jpg

【Unity】因使用混合树而导致的奇怪Bug(已修复)
https://chordfish-k.github.io/2023/01/11/unity/unity-20230111/
作者
超弦鱼
发布于
2023年1月11日
许可协议