unity---物体旋转

目录

 

1.旋转的三种方式

2.为Transform.rotation赋值

 3.使用Transform.Rotate函数

4. 使用Quaternion.RotateTowards函数

 5.使用Transform.LookAt函数

6. Transform.RotateAround 围绕旋转

 7.Quaternion.LookRotation 注视旋转

 8.Quaternion.FromToRotation 从from到to旋转

 9.坑


1.旋转的三种方式

1、矩阵旋转 2、欧拉旋转 会造成万向节锁问题 3、四元数旋转 可避免万向节锁现象

2.为Transform.rotation赋值

绕y轴旋转90度

transform.rotation = Quaternion.Euler(0, 90, 0)

 3.使用Transform.Rotate函数

transform.Rotate(0,90,0);

4. 使用Quaternion.RotateTowards函数

Quaternion targetRotation = Quaternion.Euler(0, 90, 0);
float rotateSpeed = 90f;
transform.rotation = Quaternion.RotateTowards(transform.rotation, 
targetRotation, rotateSpeed * Time.deltaTime);

 5.使用Transform.LookAt函数

 这个函数会使物体的Z轴指向目标点,因此可以用于朝向目标的情况。

6. Transform.RotateAround 围绕旋转

transform.RotateAround(Point.position, Vector3.forward, 45);

 7.Quaternion.LookRotation 注视旋转

Vector3 lookDir = transform_a.position - transform.position; transform.rotation = Quaternion.LookRotation(lookDir);

 8.Quaternion.FromToRotation 从from到to旋转

transform.rotation = Quaternion.FromToRotation(from, to);

 9.坑

transform.localEulerAngles的获取的值始终为正数,所以在旋转范围为负时,不能直接调用计算

需要定义一个外部变量,如:

private float euler = 0;

minRot_y = GetRotationY(false);
 maxRot_y = GetRotationY(true);
 euler = Mathf.Clamp(euler - speed, minRot_y, maxRot_y);
  //myCamera.transform.localEulerAngles =

new Vector3(myCamera.transform.localEulerAngles.x, eulerY, 0);
 myCamera.transform.localRotation = Quaternion.Euler(myCamera.transform.localEulerAngles.x, eulerY, 0);

猜你喜欢

转载自blog.csdn.net/lalate/article/details/129833952
今日推荐