问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity3D中四元数与欧拉角的相互转换入门

创作时间:
作者:
@小白创作中心

Unity3D中四元数与欧拉角的相互转换入门

引用
CSDN
1.
https://m.blog.csdn.net/2401_82978699/article/details/143569763

代码示例:

public class siyuanshu : MonoBehaviour
{
    void Start()
    {
        //1.欧拉角转四元数
        Quaternion q2 = Quaternion.Euler(60, 0, 0);
        GameObject obj2 = GameObject.CreatePrimitive(PrimitiveType.Cube);
        obj2.transform.rotation = q2;
        //2.四元数转欧拉角
        print(q2.eulerAngles);
    }
}  

运行结果:

1.

Quaternion.Euler(float x, float y, float z)

  • 作用:这个方法接受三个
    float
    类型的参数,分别代表绕X轴、Y轴和Z轴旋转的欧拉角(以度为单位),并返回一个
    Quaternion
    对象,该对象表示这三个欧拉角对应的旋转。
  • 参数
  • x
    :绕X轴旋转的角度(度)。
  • y
    :绕Y轴旋转的角度(度)。
  • z
    :绕Z轴旋转的角度(度)。
  • 执行顺序 z-x-y
  • 返回值:一个
    Quaternion
    对象,表示给定的欧拉角旋转。
  • 在本代码中的使用
    Quaternion q2 = Quaternion.Euler(60, 0, 0);
    这行代码创建了一个四元数
    q2
    ,它表示绕X轴旋转60度,绕Y轴和Z轴不旋转(即旋转角度为0)。

2.

GameObject.CreatePrimitive(PrimitiveType type)

  • 作用:这个方法接受一个
    PrimitiveType
    枚举类型的参数,并返回一个
    GameObject
    对象,该对象是一个具有指定基本形状(如立方体、球体等)的新游戏对象。
  • 参数
  • type
    :一个
    PrimitiveType
    枚举值,指定要创建的基本形状。
  • 返回值:一个
    GameObject
    对象,它是新创建的基本形状游戏对象。
  • 在本代码中的使用
    GameObject obj2 = GameObject.CreatePrimitive(PrimitiveType.Cube);
    这行代码创建了一个新的立方体游戏对象,并将其赋值给
    obj2
    变量。

3.

Transform.rotation

  • 作用:这是一个属性,用于获取或设置游戏对象的旋转(以
    Quaternion
    表示)。
  • 类型
    Quaternion
  • 可读写:是。
  • 在本代码中的使用
    obj2.transform.rotation = q2;
    这行代码将之前创建的
    q2
    四元数(表示绕X轴旋转60度)赋值给
    obj2
    游戏对象的
    Transform
    组件的
    rotation
    属性,从而使立方体绕X轴旋转60度。

在这部分代码中,实现了将一个欧拉角转换为四元数,并将这个四元数旋转应用到一个新创建的立方体游戏对象上。

** 综上所述,这段代码通过
Quaternion.Euler
方法将欧拉角转换为四元数,然后通过
GameObject.CreatePrimitive
方法创建一个立方体游戏对象,最后通过
Transform.rotation
属性将四元数旋转应用到这个立方体上。这是Unity中常见的用于控制游戏对象旋转的方法。**

public Vector3 eulerAngles { get; set; }

eulerAngles
属性

  • 类型
    Vector3
  • 可读写:是
  • 描述
  • 获取:当你读取
    eulerAngles
    属性时,它返回一个
    Vector3
    ,其中包含游戏对象当前旋转的欧拉角(X、Y、Z分量,以度为单位)。
  • 设置:当你设置一个
    Vector3

    eulerAngles
    属性时,游戏对象的旋转会被更新为对应的欧拉角旋转。Unity会自动将这个欧拉角转换为一个四元数(
    Quaternion
    ),因为四元数在内部用于表示旋转,以避免万向锁(gimbal lock)等问题。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号