介绍
Quaternion.LookRotation()函数用于计算从一个向量指向另一个向量所需要的旋转角度,并返回一个四元数表示该旋转
方法
Quaternion.LookRotation有两个重载形式,区别在于第二个参数:
Quaternion.LookRotation(Vector3 forward):返回一个四元数,其表示从当前位置指向给定方向所需的旋转。
Quaternion.LookRotation(Vector3 forward, Vector3 upwards):返回一个四元数,其表示从当前位置指向给定方向,并将向上方向与给定的向上方向对齐的旋转。
第一个重载形式只需要指定一个方向向量,它将返回一个从当前位置指向该方向所需的旋转。这个旋转将使得当前对象的Z轴(蓝色箭头)指向指定的方向,并将X轴(红色箭头)和Y轴(绿色箭头)沿着任意一个垂直于Z轴的平面上。
第二个重载形式需要指定两个向量:第一个是需要面向的方向向量,第二个是指定的向上方向向量。它将返回一个四元数,它将使得当前对象的Z轴(蓝色箭头)指向指定的方向,并将X轴(红色箭头)和Y轴(绿色箭头)沿着垂直于指定方向和向上方向的平面上。
举例子
角色面向玩家,并且其头部始终朝向上方,您可以使用第二个重载形式。在这种情况下,第一个参数应该是从角色位置指向玩家位置的向量,第二个参数应该是角色头部所面向的向上方向向量。
下面是一个使用第二个重载形式的示例:
using UnityEngine;
public class LookAtPlayer : MonoBehaviour
{
public Transform player;
public Transform head;
void Update()
{
Vector3 direction = player.position - transform.position;
Vector3 up = head.up;
transform.rotation = Quaternion.LookRotation(direction, up);
}
}
此示例将当前游戏对象的旋转设置为从当前位置指向玩家位置所需的旋转,并使其头部朝向上方。在每个更新帧中,它使用Quaternion.LookRotation函数来计算旋转,并将其应用于当前游戏对象的变换组件。