Обнаружение столкновения FPS и движение

11

Как обнаружение столкновений и перемещение обычно обрабатываются в FPS, особенно при небольших изменениях высоты земли, таких как лестница (как на склоне, так и на спуске)?

Джейсон Козак
источник

Ответы:

12

Объекты, как правило, представлены капсулой (цилиндром с шарами на концах) от геометрии мира (или упрощенной сеткой столкновений) для столкновения миров.

Лестница не как правило, либо не-Collide с невидимым пандусом или ниже определенной высоты вы обычно подъем вверх, как побочный эффект разрешения коллизий. (Вы получите взаимопроникновение с движением как часть размера шага, и разрешение будет вытолкнуть его вверх, к ближайшей плоскости)

Я думаю, что так работает Unreal 3, но я могу ошибаться. Я помню, как видел в иерархии ограничивающую рамку в Source, но не помню, было ли это только для боя. капсулы простые и быстрые

Аарон Брейди
источник
1

В Unity 3D самый простой способ - иметь контроллер от первого лица. Обычно персонаж должен прыгать вверх, если высота шага выше смещения шага. Но другой способ сделать это - добавить блок-коллайдер и повернуть его, чтобы персонаж мог легко скользить по лестнице, как если бы это была рампа.


источник
0

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

BigSandwich
источник
Что если это большой наклонный треугольник? Разве вы не можете найти точку пересечения луча?
Gustavo6046
Вы уже знаете положение в плоскости, вам просто нужна высота, поэтому я указал средневзвешенное значение. Я рекомендую вам взять книгу по обнаружению столкновений, если вы действительно хотите пойти дальше. Это не самый лучший формат , чтобы изучить математику.
BigSandwich
О, да. Взвешенная средняя. Я думаю, что я неправильно понял это. Виноват.
Gustavo6046