我刚刚开始使用Unity3D,这是我的第一款游戏,所以如果我不做我应该做的事情,请告诉我。
有一个2D角色,我想使用动画机制向前移动一步。这个动作可以分为两部分:
我的问题是我无法找到使这一步永久化的方法。一旦它开始循环“空闲”动画,它就会回到原始位置(在步骤之前)。
我不知道如何让我的角色保持在“前进”动画和“空闲”动画之间的位置。
我尝试在脚和地板上添加“Rigidbody 2D”,“Box Collider 2D”和“Physics2D Material”,但它有点打破了IK脚本(“Simple CCD”,来自youtube视频“Unite 2014” - Unity中的2D最佳实践“)。而且我确信有一种更简单的方式。
编辑:我的问题不够明确。空闲动画是默认动画,其中角色没有特别做任何事情。它只是在移动一段时间才能保持原位。当它运行“前进”时,所有精灵都会移动(仅当后腿推动时)。如果现在停止所有动画,那么角色确实处于一个新的位置,更接近它的对手。我可以通过删除从“前进”到“空闲”的转换来检查。但是从这里开始,我想让它循环播放Idle动画。当完成从“前进”到“空闲”的转换时,角色不会从它的新位置空闲,而是从它的旧位置开始,在步骤之前,好像是从后面拉出来的。我想从新职位开始闲置。当我们看到更多空闲动画时,这是一个更长的gif:
我的Hierarchy面板如下所示:
Animator
组件)
欢迎提出任何建议。
答案 0 :(得分:3)
如果我做对了,你就会运行StepForward动画,然后在中间切回到空闲状态。在那里,StepForward动画再次触发但是从一开始你就想从你离开的地方重新开始:
您可以记录StepForward动画的标准化值,并在下次使用它:
float normValue = this.animator.GetCurrentAnimatorStateInfo(0).normalizedTime;
然后您可以使用该值:
this.animator.Play("StepForward", 0, normValue);
其他可能性,你不是在那之后,而只是想要暂停动画而不进入空闲状态。
使用参数。您可以在Animator窗口(左上角)中添加一个float参数(称之为方向)。然后在动画师中选择一个状态,它将在检查器中打开动画设置。在速度下,打开新参数应显示的下拉列表。打勾。
现在,您的方向浮动会影响动画的速度:
this.animator.SetFloat("direction", value);
如果你给0,你就暂停。回馈1继续前进。您也可以使值变为不突然。你的方式。