向相反的方向跑?

时间:2018-05-25 20:03:48

标签: c# unity3d

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());
}

我尝试在Update方法中使用transform.translate和Vector3,但我似乎无法让它工作......

1 个答案:

答案 0 :(得分:1)

Unity SetDestination没有NavMeshAgent的反面。

那就是:当你从离开某事时,你如何决定在叉子上采取哪个方向?随机?提供最远距离的那个?如果你可以在圈子里奔跑,那么即使你离目标越来越近,这比跑到死路还要好吗?是否会向远离目标的方向跑去,以便到达允许您到达更远的目的地的分支?

你需要弄清楚“逃跑”意味着什么,并为这种导航编写自己的算法。