Определить игрока по определенному полю зрения - PullRequest
0 голосов
/ 24 апреля 2019

Я работаю над базовым ИИ и хотел бы, чтобы мой ИИ определял игрока по определенному полю зрения. Сценарий, который он прикрепил к голове ИИ, и ИИ делает его услышанным с помощью своего аниматора.

Мне удалось заставить ИИ обнаруживать игрока, если смотреть прямо на него, но он не выглядит реалистичным?

публичный GameObject Player; public bool 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 голосов
/ 24 апреля 2019

Э-э, я не знаю, почему я задал этот вопрос, если я смог сам разобраться с реальной логикой.В любом случае, вот исправление, если оно кому-нибудь поможет:

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;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...