在Unity中,要使得物体朝向一个目标向量可以直接用transform.LookAt()实现。
那么有没有什么办法可以在不使用 transform.LookAt() 的前提下,直接计算出物体在调用 transform.LookAt() 后的旋转角度?答案是肯定的。直接给出代码:
/// <summary>
/// 获取物体LookAt后的旋转值
/// </summary>
/// <param name="originalObj"></param>
/// <param name="targetPoint"></param>
/// <returns></returns>
public static Vector3 GetLookAtEuler(Transform originalObj,Vector3 targetPoint)
{
//计算物体在朝向某个向量后的正前方
Vector3 forwardDir = targetPoint - originalObj.position;
//计算朝向这个正前方时的物体四元数值
Quaternion lookAtRot = Quaternion.LookRotation(forwardDir);
//把四元数值转换成角度
Vector3 resultEuler = lookAtRot.eulerAngles;
return resultEuler;
}