【问题标题】:Rotation in Unity 3DUnity 3D 中的旋转
【发布时间】:2021-02-04 21:09:03
【问题描述】:

我在 Unity 中遇到了旋转问题。我正在从文件中读取度数值,我想围绕x,y, and z axes 进行旋转。但是,当我使用此代码时,旋转的度数正在发生变化。资产模块 Suited Man 进行了不同的旋转。

target = Quaternion.Euler(x, y, z)
transform.rotation = Quaternion.Slerp(startpos, target, Timer.fracComplete)    

我该如何解决这个问题?谢谢。

【问题讨论】:

    标签: unity3d rotation degrees


    【解决方案1】:

    您可以使用Quaternion.eulerAngles 获取四元数的Vector3 表示,然后使用Quaternion.Euler 将Vector3 转换回四元数。

    例子:

    Vector3 rot = myTransform.rotation.eulerAngles;
    rot = new Vector3(rot.x,rot.y+180,rot.z);
    myTransform.rotation = Quaternion.Euler(rot);
    

    更新:

    这是我的测试代码,当我按下“D”键时,对象在 Y 轴上旋转。

    public class BallControl : MonoBehaviour
    {
        public Transform test;
    
        void Start()
        {
        }
    
        void Update()
        {        
            if (Input.GetKey(KeyCode.D))
            {
                Vector3 rot = test.rotation.eulerAngles;
                rot = new Vector3(rot.x, rot.y + 1, rot.z);
                test.rotation = Quaternion.Euler(rot);
            }
        }
    }
    

    Euler to Quaternion

    Quaternion to AxisAngle

    【讨论】:

    • 它没有用。资产模块没有旋转,它保持不变。
    • 我的 C# 代码在这里。谢谢你的回答。变换西装人 = 变换; Vector3 rot = suitman.rotation.eulerAngles; rot = new Vector3(rot.x,rot.y,rot.z); suitman.rotation = Quaternion.Euler(rot);
    • 问题是y轴和z轴旋转的方向和方向相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多