使用向量的点乘与叉乘可以确定目标位置处于自己所在的方向,就像游戏开发中,怪物看向玩家一样。
var dir = trget_Pos - transform.position;//通过目标位置与自己的位置计算出向量
float angleSin = Vector3.Cross(dir, transform.forward).magnitude /( dir.magnitude * transform.forward.magnitude);//通过叉乘的算法计算出与自身的前方就是forward轴之间夹角的正弦值。
float angle = Mathf.Rad2Deg * Mathf.Asin(angleSin);//通过vs提供的方法,现将弦值转换成弧度,在转化成角度,就知道了需要旋转多少度才能让自己看向目标
transform.Rotate(Vector3.up,-angle);
这样旋转自己目标就能让自己看向目标
如果需要判断转向的方向是左还是右
if (Vector3.Cross(dir, transform.forward).y > 0)//通过叉乘结果的y值与左手定则来确定物体的转向方向,这样的话下面的转向角度就需要重新处理
{
Debug.Log("左转");
transform.Rotate(Vector3.up,-angle);//角度处理还得再想想
}
else
{
Debug.Log("右转");
transform.Rotate(Vector3.up, angle);
}