unity3d————四元数,欧拉角的互相转换的初步了解
代码示例:
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)等问题。
- 获取:当你读取