Бежать в противоположном направлении? - PullRequest
0 голосов
/ 25 мая 2018

enter image description here

У меня есть этот код, который определяет кратчайшее расстояние между моими белыми и зелеными шариками.

Когда он используется моими зелеными шарикамиони преследуют белых и превращают их в зеленых.

Есть ли способ сделать противоположное тому, что делают мои зеленые шары, чтобы мои белые убежали?Код зеленых шаров приведен ниже:

private Vector3 FindClosestHuman()
{
    GameObject[] Humans = GameObject.FindGameObjectsWithTag("Human");

    Transform bestTarget = null;
    float closestDistanceSqr = Mathf.Infinity;
    Vector3 currentPosition = this.transform.position;
    foreach (GameObject human in Humans)
    {
        Vector3 directionToTarget = human.transform.position - currentPosition;

        float dSqrToTarget = directionToTarget.sqrMagnitude;
        if (dSqrToTarget < closestDistanceSqr)
        {
            closestDistanceSqr = dSqrToTarget;
            bestTarget = human.transform;
        }
    }

    return bestTarget.position;
}

void Update ()
{
        infectionAgent.SetDestination(FindClosestHuman());
}

Я пытался использовать transform.translate и Vector3 в методе Update, но я просто не могу заставить его работать ...

1 Ответ

0 голосов
/ 26 мая 2018

Нет противоположности SetDestination для Unity's NavMeshAgent.

То есть: как вы решаете, в каком направлении идти на развилке, когда бежите от от чего-то?Случайным образом?Тот, который дает наибольшее расстояние?Что если вы можете бегать кругами, это лучше, чем зайти в тупик, даже если вы остаетесь ближе к своей цели?Разрешено ли движение к цели вдали от цели, чтобы достичь ответвления, которое позволит вам достичь цели дальше?

Вам необходимо выяснить, что означает «убежать», и написать собственный алгоритм для такого рода.навигации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...