我有这个代码,可以计算出我的白球和绿球之间的最短距离。
当我的绿球使用它时,它们追逐白色球并将它们变成绿色球。
有没有办法与我的绿球做的相反,让我的白球逃跑?绿球代码如下:
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,但我似乎无法让它工作......
答案 0 :(得分:1)
Unity SetDestination
没有NavMeshAgent
的反面。
那就是:当你从离开某事时,你如何决定在叉子上采取哪个方向?随机?提供最远距离的那个?如果你可以在圈子里奔跑,那么即使你离目标越来越近,这比跑到死路还要好吗?是否会向远离目标的方向跑去,以便到达允许您到达更远的目的地的分支?
你需要弄清楚“逃跑”意味着什么,并为这种导航编写自己的算法。