为啥在旋转对象时它没有像我设置的那样旋转它? [复制]

Posted

技术标签:

【中文标题】为啥在旋转对象时它没有像我设置的那样旋转它? [复制]【英文标题】: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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于为啥在旋转对象时它没有像我设置的那样旋转它? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python handlers.TimedRotatingFileHandler旋转不能像我预期的那样工作

按钮旋转 3D 对象 ARKit 2

NLog 旋转和清理日志文件

平滑的 CSS 过渡动画旋转

复平面中的旋转矩阵

轴改变旋转轴三个js