Unity动画后如何保持精灵位置?

How to keep sprites position after Unity animation?

我最近才开始使用 Unity3D,这是我的第一款游戏,所以如果我没有按照我应该做的去做,请告诉我。

有一个二维角色,我想使用动画机制向前移动一步。这个动作可以分为两部分:

我的问题是我找不到使此步骤永久化的方法。一旦它开始在 "Idle" 动画上循环,它就会回到原来的位置(在步骤之前)。

我不知道如何让我的角色停留在 "Step Forward" 动画和 "Idle" 动画之间的位置。

我尝试在双脚和地板上添加 "Rigidbody 2D"、"Box Collider 2D" 和 "Physics2D Material",但它在某种程度上破坏了 IK 脚本("Simple CCD",从youtube 视频 "Unite 2014 - 2D Best Practices In Unity")。而且我相信还有更简单的方法。

编辑:我的问题不够清楚。空闲动画是默认动画,其中角色没有做任何特别的事情。它只是在原地不动时移动了一点。当它运行s "Step Forward"时,所有精灵都移动了(只有后腿推的时候)。如果现在所有的动画都停止了,那么这个角色确实处于一个新的位置,更接近它的对手。我可以通过删除从 "Step Forward" 到 "Idle" 的过渡来检查这一点。但从这里开始,我希望它循环播放空闲动画。当从 "Step forward" 到 "Idle" 的过渡完成时,角色不是 运行ning 从它的新位置空闲,而是从它的旧位置,在步骤之前,就好像它是从落后。我想运行从新位置闲下来。

这是一个更长的 gif,我们可以看到更多的空闲动画:

我的层次结构面板看起来像:

欢迎提出任何建议。

如果我做对了,你就有了 StepForward 动画 运行 并且它在中间被切回到空闲状态。在那里,StepForward 动画再次触发,但从头开始,您希望从中断的地方重新开始:

你可以记录下你的StepForward动画的归一化值,下次使用:

   float normValue = this.animator.GetCurrentAnimatorStateInfo(0).normalizedTime;

那么您可以使用该值:

 this.animator.Play("StepForward", 0, normValue);

其他可能性,您不是在那之后,只是想暂停动画而不进入空闲状态。

使用一个参数。您可以在 Animator window(左上角)中添加一个浮动参数(称之为方向)。然后 select 动画器中的一个状态,它将在检查器中打开动画设置。在速度下,打开应显示新参数的下拉菜单。并勾选它。

现在,您的方向浮动将影响动画的速度:

this.animator.SetFloat("direction", value);

如果你给 0,你暂停。回馈 1 以前进。您还可以对值进行 lerp,使其不突兀。你的方式。