1.在自身的前后:
Vector3.Dot (transform.forward, target.position-transform.position)
返回值为正时,目标在自己的前方,反之在后方
2.在自身的左右:
Vector3.Dot(transform.right, target.position-transform.position)
返回值为正时,目标在自己的右方,反之在左方
3.在自身上下:
Vector3.Dot(transform.up, target.position-transform.position)
返回值为正时,目标在自己的上方,反之在下方
//判断目标是否在Z轴方向的X轴水平面的上方
public bool isTargetAtForward(Vector3 targetPos)
{
Vector3 turretToTargetDir = targetPos - this.transform.position;
float turretToTargetDir_Dot_turretRightDir = Vector3.Dot(this.transform.forward, turretToTargetDir.normalized);
double midValue = Math.Round(turretToTargetDir_Dot_turretRightDir, 2);
// Debug.Log("midValue" + midValue);
if (midValue >= -0.001)
{
return true;
}
return false;
}