Страница 1 из 1

Unity2D, объект находит сам себя.

СообщениеДобавлено: 28 июл 2022, 13:51
BigKatlet
Здрасте всем.
У меня есть функция, которая возвращает ближайший объект по тегу. Тег enemy присвоен ВСЕМ врагам. Функция как раз накинута на врага, то есть враг должен искать других врагов, а находит сам себя. Как исправить?

Функция:
[syntax=]GameObject FindClosestEnemy()
{

enemies = GameObject.FindGameObjectsWithTag("enemy");
float distance = Mathf.Infinity;
Vector3 position = transform.position;
foreach (GameObject go in enemies)
{
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
if (curDistance < distance)
{
nearestEnemy = go;
distance = curDistance;
}
}
return nearestEnemy;
}[/syntax]

Re: Unity2D, объект находит сам себя.

СообщениеДобавлено: 28 июл 2022, 18:26
Jarico
проверку сделай, если найденный объект является этим же объектом откуда и вызывается поиск то продолжай искать

Re: Unity2D, объект находит сам себя.

СообщениеДобавлено: 28 июл 2022, 19:05
BigKatlet
Jarico писал(а):проверку сделай, если найденный объект является этим же объектом откуда и вызывается поиск то продолжай искать
спасибо, кэп! Только как? Решил с помощью: enemies = enemies.Where(e => e != this.gameObject).ToArray();

Re: Unity2D, объект находит сам себя.

СообщениеДобавлено: 04 авг 2022, 06:59
MrDmitry
Мне кажется совершенно не правильным выгружать в массив список всех объектов для поиска всего одного из них. Для таких целей обычно пускают лучи, уже по ним выпускают ближайший. А вообще реализация вашей задачи будет зависит от того, зачем вообще вам это нужно?