目录
1. Transform.Rotate 方法
使用
2. Transform.rotation 或 Transform.localRotation 属性与四元数
使用方式:
小案例 :目标旋转角度计算:targetRotation(Quaternion类型)
玩家发现敌人位置,玩家转向敌人的实现
3. Quaternion.LookAt 或 Transform.LookAt 方法
使用方式:
4. Quaternion.Euler 方法
使用方式:
5. 插值方法(如 Quaternion.Lerp 和 Quaternion.Slerp)
使用方式:
插值的拓展:
vector3.lerp()
vector3.erp()
Quaternion.Lerp()
Quaternion.Slerp()
区别:
Quaternion的返回值和参数都是Quaternion
编辑
Vector3的返回值和参数都是Vector3编辑
6.以上旋转区别与总结
案例
玩家通过输入来实现移动和转头
transform.rotation = 类型是 四元数
transform.eularAngle =
transform.LookAt () 类型是 vector3
平滑的插值--------------------
slerp lerp
vector3.slerp(vector3 a,vector3.b,float t); 意思是从a点到b点旋转时候,时间t
Quaternion.Lerp (quaternion类型,quaternion类型,float);
Transform.Rotate
方法transform.Rotate(Vector3.up * speed * Time.deltaTime);
描述:Rotate
方法直接对物体的本地坐标系应用旋转。它接受一个Vector3
参数,表示沿X、Y、Z轴的旋转角度(以度为单位)。也可以接受一个额外的参数来指定旋转是在世界坐标系还是本地坐标系中进行。
特点:
Transform.rotation
或 Transform.localRotation
属性与四元数
Transform.rotation
= quaternion类型Quaternion.Lerp (quaternion类型,quaternion类型,float)
//返回的是quaternion类型 //参数也是quaternion类型
Quaternion targetRotation = Quaternion.Euler(90, 0, 0);
transform.rotation = targetRotation; //接受的是四元数或者
Quaternion newRotation = Quaternion.Lerp(transform.rotation, targetRotation, Time.deltaTime * rotationSpeed); //四元数插值(本身的旋转角度,目标旋转角度,时间)
transform.rotation = newRotation;
Quaternion.LookRotation ( ve3-ve3);//返回的是Quaternion
Quaternion.Lerp()//参数(Quaternion,Quaternion,float)//返回值Quaternion
描述:
rotation
和 localRotation
属性分别表示物体在世界坐标系和本地坐标系中的旋转,它们都是Quaternion
类型。可以使用四元数运算来平滑地插值或组合旋转。
特点:
Lerp
、Slerp
等插值方法可以用于实现平滑过渡。Quaternion.LookAt
或 Transform.LookAt
方法Quaternion targetRotation = Quaternion.LookAt(transform.position, target.position, Vector3.up); transform.rotation = targetRotation;或者
transform.LookAt(target.position);//敌人的位置 vect
or3类型
描述:
这些方法使物体朝向指定的位置或目标。Quaternion.LookAt
返回一个四元数,表示从当前位置朝向目标位置的旋转;Transform.LookAt
则直接应用这个旋转到物体的rotation
属性上。
特点:
Transform.LookAt
更简洁,但不如使用四元数灵活。Quaternion.Euler
方法Quaternion rotation = Quaternion.Euler(xAngle, yAngle, zAngle); transform.rotation = rotation;
描述:
Quaternion.Euler
方法根据欧拉角(以度为单位)创建一个四元数。欧拉角是表示三维旋转的一种方式,由绕X、Y、Z轴的三个角度组成。
特点:
Quaternion.Lerp
和 Quaternion.Slerp
)Quaternion newRotation = Quaternion.Slerp(startRotation, endRotation, t); transform.rotation = newRotation;
插值的拓展:
vector3.lerp()
vector3.erp()
Quaternion.Lerp()
Quaternion.Slerp()
区别:
Quaternion的返回值和参数都是Quaternion
Vector3的返回值和参数都是Vector3
描述:
Lerp
(线性插值)和Slerp
(球面线性插值)用于在两个四元数之间平滑过渡。它们接受起始四元数、结束四元数和一个插值因子t
(范围在0到1之间),并返回一个新的四元数。
特点:
Slerp
通常比Lerp
更适合用于旋转插值,因为它考虑了旋转的最短路径。Transform.Rotate
方法简单直观,但长期旋转可能导致数值不稳定。Slerp
)可以实现更稳定和平滑的旋转效果,但需要一定的数学基础。Transform.LookAt
和 Quaternion.LookAt
适用于让物体朝向特定目标。Quaternion.Euler
可以将欧拉角转换为四元数进行旋转。在选择使用哪种方法时,应根据具体需求、旋转的复杂性和性能要求来权衡。
对于简单的旋转,
Transform.Rotate
可能足够;而对于需要平滑过渡或精确控制的旋转,使用四元数和插值方法可能更合适。