1.a表示的是场景中任意红球
2.这个脚本给的是场景中任意白球
public Transform a;
public void Update()
{
Debug.DrawLine(this.transform.position, a.position, Color.red);//可不要
Debug.DrawRay(this.transform.position, this.transform.forward, Color.red);//可不要
Vector3 b1 = this.transform.position;//白球向量(原点到物体之间的连线)
Vector3 b2 = a.transform.position;//红球向量(原点到物体之间的连线)
Vector3 b3 = Vector3.Cross(this.transform.forward, b2 - b1);//求两个向量所在平面法向量
float f = Vector3.Dot(transform.forward, b2 - b1);//利用向量相减,得出两者间的向量。然后再根据自己forward和这个向量计算自己与敌人之是不是并头
float f2 = Vector3.Angle(this.transform.forward, b2 - b1);//得到两者间的角度
if (f > 0 && b3.y > 0)
{
Debug.Log("红球在自己右前" + f2 + "度");
}
if (f > 0 && b3.y < 0)
{
print("红球在自己左前侧");
}
if (f < 0 && b3.y > 0)
{
print("红球在右后方");
}
if (f < 0 && b3.y < 0)
{
print("红球在左后方");
}
}