@Svet_Ars

Поможете решить генерацию объектов в Unity?

Здравствуйте, есть у меня проект на Unity 2D и в нем бесконечно генерируются 2D платформы в определенной области (Область квадрат 200 х 200), но когда платформа выходит за квадрат то объект пересоздается заново в случайном месте этого квадрата и так пока игрок будет двигаться и не проиграет. (квадрат дочерний объект перса и он постоянно двигается за персом и поэтому платформа постояно выходят из него и создаются в новом случайном месте внутри квадрата). Но дело в том, что я не хочу чтобы игрок видел, как создаются объекты, то есть чтобы объекты не создавались в области видимости игрока, как это сделать? есть готовый вариант либо логика или мне лучше код показать?
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 2
CHIDWI
@CHIDWI
Unity3D Developer
Можно попробовать использовать transform.LookAt(target); Или же через raycast. Сперва проверяем находятся ли указанные координаты в поле зрения, если нет размещаем так обьект, если же да, то генерим новые координаты.
Ответ написан
@Svet_Ars Автор вопроса
Скорей всего это самый стремный вариант решения данной проблемы, НО он работает. Я поставил в левом верхнем углу камеры точку (пустой объект) и в правом нижем. И проверял, если объект заходит за их координаты, то создавать новые координаты. Внизу я привел метод который это всё проверяет. Если я кому то помог, то я буду рад. Я создал 125 объектов на сцене, которые постоянно ищут новую позицию в реальном времени и игра стабильно даёт 300 FPS поэтому меня всё устраивает

private void ExtraPos()
{
NameLaber1:
float x = Random.Range(ChunkesGenerate.instance.start.transform.position.x, ChunkesGenerate.instance.End.transform.position.x);
float y = Random.Range(ChunkesGenerate.instance.start.transform.position.y, ChunkesGenerate.instance.End.transform.position.y);
var p = new Vector3(x, y, 1f);

if (x >= ChunkesGenerate.instance.cntrl_1.transform.position.x &&
y <= ChunkesGenerate.instance.cntrl_1.transform.position.y &&
x <= ChunkesGenerate.instance.cntrl_2.transform.position.x &&
y >= ChunkesGenerate.instance.cntrl_2.transform.position.y)
{
goto NameLaber1;
}
else
{
transform.position = p;
}

}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы