Unity随记(一) LookAt和LookRotation的使用

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

发布了23 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Vitens/article/details/104597757