找到一个GameObject与另一个相比的角度

时间:2014-11-22 19:24:39

标签: c# unity3d

我有两个对象,一个是玩家,另一个是敌人。我需要知道敌人是否正面对着玩家。玩家面对的方向对我没有任何影响。任何帮助将不胜感激。

// Both variables set in the inspector
public GameObject theEnemy;
public GameObject thePlayer;

void Update () {


}

1 个答案:

答案 0 :(得分:1)

基本上你想要做的是找到两个向量之间的角度:

Vector3 enemyLookDirection = enemy.transform.forward;
Vector3 playerRelativeDirection = 
    (player.transform.position - enemy.transform.position).normalized;

float angle = Vector3.Angle(enemyLookDirection, playerRelativeDirection);
float enemyFov = 45.0f; // Biggest angle that enemy can see from the center of view
if (angle < enemyFov)
    EnemyCanSeePlayer();

P.S。而不是使用transform.position,你可能想要计算玩家和敌人眼睛的位置。