游戏中有时候我们需要对主角的位置进行判断获取,并由此知道两个点之间的方位和距离。
距离可以利用公式得到,但是方位利用简单的欧拉角和四元数的转换无法简单获取,这里我利用游戏开发中的实践经验和大家分享一下这个角度的获取。
如图,B需要知道A对B的角度,所以在已知A和B的Transform的Position下,如何获取这个角度,
Angle_A_B = new Vector3(0, 0, Vector3.Angle(Word.transform.right, B.position - A.position));
我们只是获取了一个vector3,但是注意,这里我们不仅利用AB的位置获取角度,还利用到了世界坐标系的X轴,这个transform.right = (1,0,0)就是向右的X轴,即如图的β-α值,只不过是相对坐标系来说,但是这个不是我们想要的AB之间的角度,所以我们利用Vector3.angle()获取的是一个0-180的角度,之所以我们不使用Vector3.Equals,是因为我们选哟的是0-180的角度,而不是一个四元数,这个方法转来的只是空间旋转,而不是角度。