Unity中的transform.LookAt()与Quaternion.LookRotation()从名字上看都是有注视目标的意思,这里简单记录下这两个方法的使用,先上动态图(图中四个单位,其中只有大的红色Boss是通过键盘控制位移和旋转,其他三个小单位则是通过对这两个方法的使用达到图中的效果的):
transform.LookAt()
注意图中的小蓝,以及那根蓝色的线,可以发现小蓝的朝向(transform.forward)是始终指向boss的。
void Update()
{
transform.LookAt(Boss.transform);
Debug.DrawLine(transform.position, Boss.transform.position, Color.blue);
}
Quaternion.LookRotation()
图中的小小红和小绿都是采用的LookRotation(),先看小小红,他的朝向始终和boss的朝向保持一致,所以可以通过这个办法来控制追随者的转向。
void Update()
{
//保持和Boss同一个朝向
transform.rotation = Quaternion.LookRotation(Boss.transform.forward);
Debug.DrawRay(transform.position, Boss.transform.forward, Color.red);
}
而图中的小绿,则是和小蓝有点类似,一直注视着Boss,但是当Boss发生上下移动(不在同一个水平面)时,就能看到差别了,使用LookRotation()只要计算好需要朝向的向量即可.
void Update()
{
Vector3 dir = Boss.transform.position - transform.position;
dir = new Vector3(dir.x, 0, dir.z);
transform.rotation = Quaternion.LookRotation(dir);
Debug.DrawRay(transform.position, dir, Color.green);
}
关于四元数Quaternion的理解,有个视频讲的很棒,地址:https://www.bilibili.com/video/av33385105?t=21