0

我正在 Unity 中开发 2D 游戏,遇到了一个无论我做什么都无法解决的问题。

我有一个播放器角色(一个 .psb 文件被分成多个层,骨骼附加在统一的蒙皮编辑器中)并附加了一个动画师。在动画师中,有两层——一层基础层和一层“灯笼”层(之所以这样称呼,是因为它负责将常规动画与专门设计用于拿着灯笼的动画之间的混合)。两层都设置为覆盖,灯笼层同步,其权重由脚本控制。

当第二层存在时,我的角色总是开始逐渐向上飞行,无论其设置、重量或状态运动如何。如果我删除图层,所有问题都会消失。如果我在动画师上禁用“应用根动作”,问题也会消失,但遗憾的是我需要启用它。然而,实际上并没有动画修改角色的变换,只有骨骼的旋转。现在它变得有趣了:当我运行一个确实修改玩家位置的动画时,在它结束后,玩家不再飞起来。

我发现与此相关的所有主题都是关于 3D 装备的设置,这些设置比我的 2D 动画剪辑要多得多(这里只有 3 个选项......叹息),通常通过烘焙到姿势 Y(或这些线条中的东西)或设置来解决这个问题“足部 IK”为真。尽管如此,剪辑和动画师上的所有设置组合都无法解决问题(动画师状态上的“脚 IK”设置也没有改变任何东西,所以我将它们设置为禁用)。阻止我的播放器无限期向上飞行的唯一 3 种方法是:删除第二层,播放一次修改播放器位置的动画,或禁用根运动。

此外,没有脚本会以可能导致此问题的方式修改玩家的 y 坐标(我将它们全部禁用,但没有任何区别)。

我知道这是一个非常模糊的问题,但如果我能自己解决它,我就不会在这里发布。我没有附上任何屏幕截图或代码,因为我留下的印象是这更像是一个理论问题......也没有动画师的设置组合或剪辑能够改变任何东西,所以......:/不用说,如果有人认为这会有所帮助,我会很乐意这样做。

先感谢您!

最好的问候,科乔

4

1 回答 1

0

从默认渲染管道升级到通用渲染管道或将 Unity 更新到版本 2019.3.2f1 解决了这个问题。

编辑:不是真的!一段时间后问题再次出现。这个问题是由动画师的(可能是内部的?)更新引起的;例如,在播放模式下手动更改动画编辑器中的状态速度时,或者在代码中更改动画状态设置时(更改动画速度本身似乎不会导致任何问题)。我从来没有设法找到这背后的具体原因或解决它,但我找到了一个足够好的解决方法,实际上使问题不存在:

  1. 将“Apply root motion”设置为true(动画组件在inspector中的设置);
  2. 创建一个非常快速的动画,可以稍微移动玩家的位置,然后将其重置;每次需要修改动画状态,或者每次遇到此错误时,只需播放动画即可。动画移动会抵消错误,并且动画速度设置得足够高时,将使其对玩家不可见。
于 2020-02-25T11:12:31.620 回答