【问题标题】:someObject.transform.eulerAngles = new Vector3(0f,0f,0f) Not workingsomeObject.transform.eulerAngles = new Vector3(0f,0f,0f) 不工作
【发布时间】:2021-09-25 20:49:17
【问题描述】:

这是我尝试旋转时的代码

    IEnumerator cubeToBlock () {
        yield return new WaitForSeconds(m_cube.GetComponent <Animation> ().clip.length-0.6f);
        block.Play();
        //! Adding RigitBody component to m_cube
        m_cube.AddComponent <Rigidbody> ();
        m_cube.transform.eulerAngles = new Vector3(0f,0f,0f);
        print(m_cube.transform.eulerAngles.x);
    }

它打印0,所以unity认为它是0但它不是

我不明白该怎么办,我是 Unity 新手,所以如果我遗漏了一些细节,请告诉我

附: m_cube 肯定是 Main Cube 组件 我的父母旋转了90度

【问题讨论】:

    标签: c# unity3d euler-angles


    【解决方案1】:

    可能是您的 Cubes 父对象略微旋转。 Rotation 和 EulerAngles 处理全局旋转。如果您想要局部旋转,请尝试transform.localEulerAngles 并确保父变换未旋转。如果这不是问题,请回复。

    编辑:检查器显示本地位置/旋转。这就是为什么您需要使用 localEulerAngles 或确保父级根本没有转动或移动的原因。

    【讨论】:

    • 是的,父级已旋转,但我需要旋转它,在这种情况下我该怎么办? ://
    • @NairiAregHatspanyan 如果需要旋转父对象,请使用 transform.eulerAngles。检查员会说它没有正确旋转,因为它正在向您显示局部旋转,我不知道您是否可以更改它。
    【解决方案2】:

    首先,我建议您尽可能在编辑器中设置组件,而不是通过脚本添加它们。这里我指的是下面一行:

    m_cube.AddComponent &lt;Rigidbody&gt; ()

    回到你的问题,如果立方体不应该被力驱动,你可以将 isKinematic 设置为 true。您可以使用RigidBody.MoveRotation 来操作旋转。这也会更新对撞机。

    【讨论】:

      猜你喜欢
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 2023-02-22
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      相关资源
      最近更新 更多