通过特定视野检测玩家

时间:2019-04-24 08:06:56

标签: c# unity3d

我正在研究基本的AI,希望我的AI通过特定的视野检测玩家。它附加在AI和AI头上的脚本的确会通过其动画师改变其听到的声音。

当我直接面对玩家时,我能够使AI检测到玩家,但感觉不现实吗?

公共GameObject Player; 公共布尔isFacingPlayer;

void Update(){

    // check if AI is facing player
    Vector3 dir = Player.transform.position - transform.position;
    if (Vector3.Dot(dir, transform.forward) > 0.0f) {

        isFacingPlayer = true;

    } else {

        isFacingPlayer = false;

    }


}

我希望有一个特定的视野,例如310。但是不确定如何获得?

1 个答案:

答案 0 :(得分:0)

呃,我真的不知道为什么我能问这个问题,如果我能够凭自己的真实逻辑自己解决这个问题。无论如何,如果有问题的话,这里有一个解决方法:

Vector3 targetDir = Player.transform.position - transform.position;
        float angleToPlayer = (Vector3.Angle (targetDir, transform.forward));

        if (angleToPlayer >= -90 && angleToPlayer <= 90) { // 180 FOV
            isFacingPlayer = true;
        } else {
            isFacingPlayer = false;
        }