【问题标题】:Why when rotating object it's not rotating it as I set it? [duplicate]为什么在旋转对象时它没有像我设置的那样旋转它? [复制]
【发布时间】:2022-01-19 02:45:43
【问题描述】:

在编辑器中,对象的默认旋转是(对象是子对象):

旋转为 180,0,0

rotation by default in editor

然后这段代码:

public void SetState(string jsonString)
    {
        m_state = JsonUtility.FromJson<State>(jsonString);

        if (m_state.open)
        {
            crateCap.rotation = Quaternion.Euler(90,0,0);

            hasOpened = true;
        }
        else
        {
            crateCap.rotation = Quaternion.Euler(180, 0, 0);

            hasOpened = false;
        }
    }

我希望它在 else 中默认保持旋转,但是当它使用断点到达该行时:

crateCap.rotation = Quaternion.Euler(180, 0, 0);

我在代码中看到旋转是 1.0、0.0、0.0、0.0

rotation in code

在编辑器中轮换是:

180, -111.44, 0

为什么旋转的 Y 是 -111.44 而不是我设置的 0?我将它设置为 180, 0, 0

rotation is not 180,0,0 but 180,-111.44,0

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    对此并不完全确定,但问题可能来自您的对象是一个孩子这一事实。 transform.rotation 设置相对于世界空间的旋转。

    请改用transform.localRotation = Quaternion.Euler(180, 0, 0);,因为您可能希望对象相对于其父对象旋转。

    如果您需要更多信息,这里有一些有用的链接: https://docs.unity3d.com/ScriptReference/Transform-localRotation.html

    https://docs.unity3d.com/ScriptReference/Transform-rotation.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多