2017-02-12 2 views
0

У меня был вопрос, связанный с выступлениями.Unity 5 - Collider vs timer in thread

Вот контекст:

Представьте себе TempleRun подобную игру, в которой игрок движется только в 1 направлении, и допускается для переключения между 3 полосы (все они идут в одном направлении).

В отличие от храмового прогона, поворота нет.

Я хочу, чтобы уровень генерировался динамически, и поэтому мы разместили коллайдеры на земле. При срабатывании уровень загружает следующую (случайную) часть пути и выгружает старый.

Поскольку игрок движется с постоянной скоростью в 1 направлении, мне было интересно, не было бы лучше использовать таймер для загрузки и выгрузки игровых частей?

Кроме того, мне было интересно, как коллайдеры были обработаны Единством? Они работают с нитью, постоянно наблюдая за столкновением?

ответ

0

Лично я бы не использовал время в случае, если я хочу изменить скорость игрока с помощью повышения или по какой-либо другой причине.

Вот некоторая информация о коллайдерах:

https://docs.unity3d.com/Manual/CollidersOverview.html

https://forum.unity3d.com/threads/collision-detection-at-high-speed.3353/

Из того, что я читал, он чувствует, как есть отдельный поток, который имеет фиксированный шаг времени и увольняет события, чтобы предупредить, когда происходит столкновение.

+0

Хорошо, спасибо за ссылки;) Но что делать, если нет повышения? Таймер будет дешевле, чем процесс обнаружения столкновения, не так ли? –

+1

Если бы я должен был кодировать это, я бы использовал сетку. Позиция z игрока всегда равна 0, и они управляют положением x. Уровень будет перемещать заданное значение z в секунду, используя lerp для создания приятного плавного движения. Каждый раз, когда кусок уровня достигает определенного значения z, удалите его и поместите другого спереди. Поэтому технически я использовал бы таймер, но я бы вычислил его со значения скорости и использовал результаты в функции lerp. –