作为3D游戏开发中,经常需要计算面朝物体的角度转向。比如目前游戏中常用的AI,当你靠近怪物一定的距离时,怪物会感应到你的存在,并转向你,朝你跑过来攻击你。
想要计算这个,首先我们需要知道Unity3D中与四元数相关的几个方法:
Quaternion.LookRotation 主要是将向量,和以某个轴为朝上的方向,来生成一个四元数(用于表示旋转方向)。
Quaternion.Slerp 球形(弧形)插值计算,大部分时候应用于四元数。在从一个旋转值旋转到另外一个旋转值的时候可以使用。
代码如下:
//面向物体
public void faceToObj ()
{
Vector3 lookPos = pObj.transform.position - transform.position;
lookPos.y = 0;
Quaternion rotation = Quaternion.LookRotation (lookPos);
transform.rotation = Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * 30.0f);
}
首先计算两个物体的方向向量,然后将方向向量以某个轴为Up,转换为四元数旋转量。最后通过插值变化,将当前的旋转量旋转到指定的旋转量上,完成平滑的旋转。
lookPos.y = 0主要是为了防止两个物体大小不一样,导致朝向不是平行于地面的。
文章评论