为啥在旋转对象时它没有像我设置的那样旋转它? [复制]
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
【讨论】:
以上是关于为啥在旋转对象时它没有像我设置的那样旋转它? [复制]的主要内容,如果未能解决你的问题,请参考以下文章