Использование Mathf.Infinity
просто для инициализации переменной некоторым недопустимым начальным значением, которое будет больше, чем любое расстояние, которое вы измеряете между фактическими объектами.Если бы это был ссылочный тип, это было бы эквивалентно null
в этом контексте.
Vector3 directionToTarget = potentialTarget.transform.position - currentPosition;
float dSqrToTarget = directionToTarget.sqrMagnitude;
Эта часть здесь измеряет расстояние между двумя объектами в трехмерном пространстве, используя базовую векторную математику.
if (dSqrToTarget < closestDistanceSqr )
{
closestDistanceSqr = dSqrToTarget;
bestTarget = potentialTarget;
}
Сравнивает это вычисленное расстояние с текущим «ближайшим» объектом.Поскольку начальное значение «неверно», первый объект всегда будет считаться «потенциально ближайшим» и сохраняться.Последующие объекты в цикле будут продолжать проверять сравнение.Если они ближе, они сохраняются в значении bestTarget
.Если нет, то цикл продолжается до тех пор, пока не останется больше объектов для проверки.
После завершения цикла возвращается значение bestTarget
, поскольку оно удерживает минимальное расстояние от всего, что найдено в цикле.