Для игры необходимо было разместить новый объект, чтобы он не соприкасался с объектами, находящимися на поле боя.
Для этого у них должны быть коллайдеры. Метод Physics.OverlapSphere определяет наличие коллайдеров в некотором радиусе сферы.
Получилась такая функция для определения отсутствия объектов в некотором радиусе:
public static Vector3 CheckNewPosition(int radius)
{
Vector3 pos = new Vector3(Random.Range(22f, -22f), 0f, Random.Range(13f, -13f)); ;
bool isCheck = false;
while (!isCheck)
{
pos = new Vector3(Random.Range(22f, -22f), 0f, Random.Range(13f, -13f));
Collider[] hitColliders = Physics.OverlapSphere(pos, radius);
if (hitColliders.Length == 1)
{
isCheck = true;
}
}
return pos;
}
Функция выбирает рандомное положение на поле, и проверяет, есть ли в радиусе от этой позиции коллайдеры. Если они есть, цикл повторяется, пока не найдется свободное место.
Обновлено: 03.12.2019
Вам помогла эта статья? Оцените!