Unity物体旋转

在Unity中,旋转是指将对象绕其自身的某个轴旋转一定角度的操作。
Unity提供了多种旋转方法,以下是其中的一些:
如果需要缓慢的旋转可以使用第4,5两个方法之一
Unity官方还提供很多方法,可以参考官方文档

1.Transform.Rotate方法

  • Transform.Rotate方法是最基本的旋转方法,它可以将对象绕其自身的某个轴旋转一定的角度。其语法如下:
public void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self);
  • 其中,eulerAngles是欧拉角,表示旋转的角度;relativeTo是旋转的坐标系,可选的值有Space.Self和Space.World。
  • 例如,如果想让对象绕x轴旋转30度,可以使用以下代码:
transform.Rotate(new Vector3(30, 0, 0));

2.Transform.RotateAround方法

  • Transform.RotateAround方法可以将对象绕某个点旋转一定的角度。其语法如下:
public void RotateAround(Vector3 point, Vector3 axis, float angle);
  • 其中,point表示旋转的中心点,axis表示旋转的轴,angle表示旋转的角度。
  • 例如,如果想让对象绕世界坐标系中的点(0,0,0)绕y轴旋转30度,可以使用以下代码:
transform.RotateAround(Vector3.zero, Vector3.up, 30);

3.Quaternion.RotateTowards方法

  • Quaternion.RotateTowards方法可以将对象从当前旋转角度逐渐旋转到目标旋转角度。其语法如下:
public static Quaternion RotateTowards(Quaternion from, Quaternion to, float maxDegreesDelta);
  • 其中,from表示当前的旋转角度,to表示目标的旋转角度,maxDegreesDelta表示最大旋转角度差,即每一帧最多旋转的角度。
  • 例如,如果想让对象从当前角度逐渐旋转到目标角度,可以使用以下代码:
Quaternion fromRotation = transform.rotation;
Quaternion toRotation = Quaternion.Euler(new Vector3(30, 0, 0));
transform.rotation = Quaternion.RotateTowards(fromRotation, toRotation, Time.deltaTime * 30);

这段代码可以让对象从当前角度逐渐旋转到x轴旋转30度的角度。

4.Quaternion.Lerp方法

+Quaternion.Lerp方法可以将对象从当前旋转角度逐渐旋转到目标旋转角度。与Quaternion.RotateTowards方法类似,但是它是按照线性插值的方式进行旋转。其语法如下:

public static Quaternion Lerp(Quaternion a, Quaternion b, float t);
  • 其中,a表示起始旋转角度,b表示目标旋转角度,t表示插值因子,即当前旋转角度与目标旋转角度之间的比例。
  • 例如,如果想让对象从当前角度逐渐旋转到目标角度,可以使用以下代码:
Quaternion fromRotation = transform.rotation;
Quaternion toRotation = Quaternion.Euler(new Vector3(30, 0, 0));
float t = Time.deltaTime * 2; // 旋转速度
transform.rotation = Quaternion.Lerp(fromRotation, toRotation, t);
  • 这段代码可以让对象从当前角度逐渐旋转到x轴旋转30度的角度,其中t表示每一帧旋转的插值因子,即旋转速度。

5. Transform.LookAt方法

  • Transform.LookAt方法可以将对象的正面朝向某个点或某个方向。其语法如下:
public void LookAt(Transform target, Vector3 worldUp = Vector3.up);
public void LookAt(Vector3 worldPosition, Vector3 worldUp = Vector3.up);
  • 其中,target表示朝向的目标点,worldPosition表示朝向的目标方向,worldUp表示旋转的坐标系。
  • 例如,如果想让对象的正面朝向某个点,可以使用以下代码:
transform.LookAt(targetPosition);
  • 这段代码可以让对象的正面朝向targetPosition点。如果想让对象的正面朝向某个方向,可以使用以下代码:
transform.LookAt(transform.position + direction);
  • 这段代码可以让对象的正面朝向当前位置加上direction方向。

猜你喜欢

转载自blog.csdn.net/Xz616/article/details/130642578
今日推荐