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

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

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

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

挥舞动画:
enter image description here

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

And here comes the problem: When I start the game and make my character wave, the waving animation is played, but only the waving animation body part, and not the underlying basic animation with the rest of the body. In other words: It looks like for a moment my character looses the hat and the feet.

我尝试了很多东西:我设置了不同的权重,我尝试了Override和Additive Blend Modes - 似乎没有任何组合可行 .

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

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

Waving Animation "Mask"

这也没有帮助 .

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

编辑:

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

我基本上制作了新的精灵表:疯了:我拿了现有的精灵表,只制作了包含手臂的精灵表,其他的则包含了没有手臂的身体 .

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

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

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

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

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