较高层中的Unity 2d动画会擦除较低层

时间:2015-08-28 19:55:53

标签: animation

我正在使用Unity 5,我想创建一个2D游戏。我为我的2D角色闲置,跳跃和运行动画。我现在想要添加一个挥动的动画,它应该在触发时部分覆盖其他动画。

我的想法是创建一个精灵表(我正在使用Pyxel Edit)和我的挥动动画,它只覆盖我的2d角色身体的一部分。

为了在这里为这篇文章可视化,我创建了一些虚拟精灵表。

基本动画(例如空闲): enter image description here

挥舞动画: enter image description here

现在,在我的Unity Animator中,我将基本动画放在我的基础层上,并创建了第二层,我将挥动动画放在其中。

问题就出现了:当我开始游戏并让我的角色挥动时,会播放挥动的动画,但只会挥动动画的身体部分,而不是身体其他部分的基础动画。 换句话说:看起来我的角色失去了帽子和脚。

我尝试了很多东西:我设置了不同的权重,我尝试了覆盖和添加混合模式 - 似乎没有任何组合起作用。

有些帖子以及Unity手册建议为此问题创建一个遮罩,但我找不到任何提示如何为2D精灵表创建遮罩,所有指南都适用于3D模型。我也发现了AddMixingTransform,但也只能用于掩码。

我还尝试在顶部和边框上切割我的挥动精灵表,如下所示:

Waving Animation "Mask"

这也没有帮助。

有谁理解我的问题以及如何解决它?

编辑:

如果有人有兴趣,这就是我如何解决我的问题。我不确定这是不是应该如何工作的方式,但我找不到其他任何可行的方法。

我基本上制作了新的精灵表:疯了:我拿了现有的精灵表,只制作了包含手臂的精灵表,而另一些包含没有手臂的身体。

然后我在我的玩家游戏对象上创建了一个新的Animator(arm)组件,并将其Sprite Renderer Component放在已经存在的(现在正文)Animator上方的Layer上。

我为手臂和身体部位创建了新的动画并将它们放入各自的动画师中,我还必须创建新的状态/过渡等等......

我必须为新的Animator创建相同的参数,并在我的代码中另外触发它们,因此动画是同步的(我认为当我的挥动动画中断运行臂时我仍然遇到一个小问题 - 动画,当它回来时,我认为跑步动画与身体动画动画不同步,但感谢上帝几乎不可见。)

我不确定这是否是我问题的正确解决方案,我只用一个Animator和两个图层来尝试它,但是这个简单不起作用,因为你不能为2d Sprite创建一个掩码 - 没有掩码一层总是消除了另一层的完整动画。

任何人都可以确认我的方法在某种程度上是正确的,还是有另一种方法可以实现更简单的方法?

0 个答案:

没有答案