使用 Transform.Rotate 以多种方式旋转游戏对象。旋转通常以欧拉角提供,而不是四元数。
您可以指定世界坐标系或局部坐标系中的旋转。
世界坐标系旋转使用场景
的坐标系,因此当您开始旋转游戏对象时,其 x、y 和 z 轴与 x、y 和 z 世界轴对齐。因此,如果您在世界空间中旋转一个立方体,则其轴线与世界对齐。当您在 Unity 编辑器的场景
视图中选择一个立方体时,旋转Gizmos
会显示用于左右、上下和前后旋转轴。移动这些Gizmos
将在轴周围旋转立方体。如果您取消选择然后重新选择立方体,则轴线将重新开始与世界对齐。
局部旋转使用游戏对象本身的坐标系。因此,新创建的立方体使用其 x、y 和 z 轴设置为零旋转。旋转立方体将更新旋转轴。如果您取消选择然后重新选择立方体,则轴线将显示在与之前相同的方位。
在局部 Gizmo 切换中未旋转的立方体
在局部 Gizmo 切换中旋转的立方体
在全局 Gizmo 切换中未旋转的立方体
在全局 Gizmo 切换中旋转的立方体
有关 Unity 中旋转的更多信息,请参阅Unity 中的旋转和方向。
eulers | 要应用的欧拉角旋转。 |
relativeTo | 确定是相对于游戏对象局部旋转游戏对象,还是相对于场景中的世界空间旋转。 |
应用围绕 z 轴旋转 eulerAngles.z 度,围绕 x 轴旋转 eulerAngles.x 度,以及围绕 y 轴旋转 eulerAngles.y 度(按此顺序)。
Rotate 以Vector3作为欧拉角参数。第二个参数是旋转轴,可以设置为局部轴(Space.Self)或全局轴(Space.World)。旋转量为欧拉角。
xAngle | 围绕 X 轴旋转游戏对象的度数。 |
yAngle | 围绕 Y 轴旋转游戏对象的度数。 |
zAngle | 围绕 Z 轴旋转游戏对象的度数。 |
relativeTo | 确定是相对于游戏对象局部旋转游戏对象,还是相对于场景 中的世界空间旋转。 |
此方法的实现应用围绕 z 轴旋转zAngle
度,围绕 x 轴旋转xAngle
度,以及围绕 y 轴旋转yAngle
度(按此顺序)。
Rotate 可以使用 3 个浮点数分别指定 x、y 和 z 的欧拉角。
示例显示了两个立方体:一个立方体使用Space.Self(游戏对象的局部空间和轴),另一个使用Space.World(相对于/场景/的空间和轴)。两者最初都在 X 轴上旋转 90 度,因此默认情况下它们不会与世界轴对齐。使用检查器中公开的 xAngle、yAngle 和 zAngle 值来查看不同的旋转值如何应用于这两个立方体。您可能会注意到立方体视觉旋转的方式取决于当前方向和使用的空间选项。在场景视图中选择立方体时,尝试使用这些值,以了解这些值如何交互。
using UnityEngine;
// Transform.Rotate example // // This script creates two different cubes: one red which is rotated using Space.Self; one green which is rotated using Space.World. // Add it onto any GameObject in a scene and hit play to see it run. The rotation is controlled using xAngle, yAngle and zAngle, modifiable on the inspector.
public class ExampleScript : MonoBehaviour { public float xAngle, yAngle, zAngle;
private GameObject cube1, cube2;
void Awake() { cube1 = GameObject.CreatePrimitive(PrimitiveType.Cube); cube1.transform.position = new Vector3(0.75f, 0.0f, 0.0f); cube1.transform.Rotate(90.0f, 0.0f, 0.0f, Space.Self); cube1.GetComponent<Renderer>().material.color = Color.red; cube1.name = "Self";
cube2 = GameObject.CreatePrimitive(PrimitiveType.Cube); cube2.transform.position = new Vector3(-0.75f, 0.0f, 0.0f); cube2.transform.Rotate(90.0f, 0.0f, 0.0f, Space.World); cube2.GetComponent<Renderer>().material.color = Color.green; cube2.name = "World"; }
void Update() { cube1.transform.Rotate(xAngle, yAngle, zAngle, Space.Self); cube2.transform.Rotate(xAngle, yAngle, zAngle, Space.World); } }
axis | 要应用旋转的轴。 |
angle | 要应用的旋转度数。 |
relativeTo | 确定是相对于游戏对象局部旋转游戏对象,还是相对于场景中的世界空间旋转。 |
围绕给定轴旋转对象,旋转度数由给定角度定义。
Rotate 具有轴、角度和局部或全局参数。旋转轴可以朝任何方向。
eulers | 要应用的欧拉角旋转。 |
应用围绕 z 轴旋转 eulerAngles.z 度,围绕 x 轴旋转 eulerAngles.x 度,以及围绕 y 轴旋转 eulerAngles.y 度(按此顺序)。
旋转相对于游戏对象的局部空间(Space.Self)。
xAngle | 围绕 X 轴旋转游戏对象的度数。 |
yAngle | 围绕 Y 轴旋转游戏对象的度数。 |
zAngle | 围绕 Z 轴旋转游戏对象的度数。 |
此方法的实现应用围绕 z 轴旋转zAngle
度,围绕 x 轴旋转xAngle
度,以及围绕 y 轴旋转yAngle
度(按此顺序)。
旋转相对于游戏对象的局部空间(Space.Self)。
axis | 要应用旋转的轴。 |
angle | 要应用的旋转度数。 |
围绕给定轴旋转对象,旋转度数由给定角度定义。
Rotate 具有轴、角度和局部或全局参数。旋转轴可以朝任何方向。旋转相对于游戏对象的局部空间(Space.Self)。