赞
踩
Unity中的transform.LookAt()与Quaternion.LookRotation()从名字上看都是有注视目标的意思,这里简单记录下这两个方法的使用,先上动态图(图中四个单位,其中只有大的红色Boss是通过键盘控制位移和旋转,其他三个小单位则是通过对这两个方法的使用达到图中的效果的):
注意图中的小蓝,以及那根蓝色的线,可以发现小蓝的朝向(transform.forward)是始终指向boss的。
- void Update()
- {
- transform.LookAt(Boss.transform);
- Debug.DrawLine(transform.position, Boss.transform.position, Color.blue);
- }
图中的小小红和小绿都是采用的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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。