Unity - 在它的边缘滚动立方体

时间:2013-11-20 15:55:23

标签: animation rotation unity3d cube

我在Unity遇到问题。我已经创建了一个网格,其中的中心是一个立方体。对于立方体,我创建了4个动画 - 将立方体旋转90°并进一步移动一个字段。

这实际上工作得很好,动画也是在每个字段上完成我实例化我的对象。

我现在面临的问题是,我不能在一个方向上做出多个动作。立方体将重置为原始位置(在本例中为红叉)

enter image description here

所以我想到了移动我的立方体的父对象(我必须创建它以使相关动画成为可能)并添加了这段代码:

if(Input.GetKeyDown("w")){      
            animation.Play("move_forward", PlayMode.StopAll);
            transform.parent.transform.Translate(Vector3.forward, Space.World);
        }

现在,立方体首先进一步跳过一个字段然后启动动画。我怎么能达到我想要的效果呢? (一个带有一个动画的场,然后能够继续滚动)

1 个答案:

答案 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);
}