我在Unity遇到问题。我已经创建了一个网格,其中的中心是一个立方体。对于立方体,我创建了4个动画 - 将立方体旋转90°并进一步移动一个字段。
这实际上工作得很好,动画也是在每个字段上完成我实例化我的对象。
我现在面临的问题是,我不能在一个方向上做出多个动作。立方体将重置为原始位置(在本例中为红叉)
所以我想到了移动我的立方体的父对象(我必须创建它以使相关动画成为可能)并添加了这段代码:
if(Input.GetKeyDown("w")){
animation.Play("move_forward", PlayMode.StopAll);
transform.parent.transform.Translate(Vector3.forward, Space.World);
}
现在,立方体首先进一步跳过一个字段然后启动动画。我怎么能达到我想要的效果呢? (一个带有一个动画的场,然后能够继续滚动)
答案 0 :(得分:0)
您可以使用Time.deltaTime随时间推移应用翻译,而不是立即应用:
if(Input.GetKeyDown("w")) {
animation.Play("move_forward", PlayMode.StopAll);
transform.parent.transform.Translate(Vector3.forward * Time.deltaTime, Space.World);
}
查看Time.deltaTime文档以应用速度步进。
然而,正如用户Sandy Gifford在帖子评论中所说,你应该通过不使用动画并简单地使用Transform.Rotate来简化很多事情:
if(Input.GetKeyDown("w")){
transform.parent.transform.Rotate(Vector3.right * Time.deltaTime, Space.World);
transform.parent.transform.Translate(Vector3.forward * Time.deltaTime, Space.World);
}