【问题标题】:Unity - roll cube over it's edgesUnity - 在它的边缘滚动立方体
【发布时间】:2013-11-20 15:55:23
【问题描述】:

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

这实际上工作正常,并且动画在我实例化我的对象的每个字段上都正确完成。

我现在面临的问题是,我不能在一个方向上多做一个动作。立方体将被重置到我原来的位置(在这种情况下是红十字)

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

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

现在立方体首先进一步跳跃一个字段,然后开始动画。我怎样才能达到我想要的结果? (一个场一个动画就可以继续滚动了)

【问题讨论】:

  • 是否无法使用 Unity 的旋转工具?它比导入动画更容易。
  • 确实,如果您想在物理上进行,只需在“围绕”您希望它翻滚的轴上施加一个力即可。

标签: animation rotation unity3d cube


【解决方案1】:

您可以使用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 在帖子 cmets 中所说,您应该通过不使用动画而简单地使用 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);
}

【讨论】:

    猜你喜欢
    • 2017-11-13
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多