public static Quaternion LookRotation (Vector3 forward, Vector3 upwards= Vector3.up); 官方解释: 使用指定的 forward 和 upwards 方向创建旋转。 Z 轴将与forward对齐,X 轴与 forward 和 upwards 之间的差积对齐,Y 轴与 Z 和 X 之间的差积对齐。 如果 forward 或 upwards 量值为零,则返回恒等。 如果 forward 和 upwards 共线,则返回恒等。
文档看得迷迷糊糊的,搜到的一些博客也没有讲到关键点上,自己研究了一会,总的来说, LookRotation的作用就是将方向转化为角度:传入一个方向将返回一个旋转角,某个物体被施加这个旋转角后,这个物体的forward方向将指向传入的方向。 这个方法几乎必须配合transform.rotation = Quaternion.LookRotation() 使用 ?
简单案例说明:
场景中新建一个正方体和球体,用LookRotation方法将“正方体看向球体”,并绘制输出3条射线。 挂载到正方体上的脚本内容
public class NewBehaviourScript2 : MonoBehaviour{
private Transform sphere;
void Start(){
sphere = GameObject.Find("Sphere").transform;
}
void Update(){
Vector3 dir = sphere.position - transform.position;
Quaternion ang = Quaternion.LookRotation(dir);
transform.rotation = ang;
Debug.DrawRay(transform.position, ang.eulerAngles, Color.red);
Debug.DrawRay(transform.position, transform.forward * 100, Color.blue);
Debug.DrawRay(transform.position, dir, Color.green);
}
}
tip:球体坐标 - 正方体坐标 = 正方体指向球体的向量 运行场景 Vector3 dir = sphere.position - transform.position; Quaternion ang = Quaternion.LookRotation(dir); 绿色射线:以向量dir为方向。 蓝色射线:以正方体forward为方向。 红色射线:以四元数ang为方向;是正方体的旋转轴线。 ? Quaternion.LookRotation (Vector3 forward, Vector3 upwards= Vector3.up) : 传入一个forward方向将返回一个旋转角,某个物体被施加这个旋转角后,这个物体的forward方向将对齐至传入的forward方向。
|