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


11

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

Ответы:


12

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

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

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


1

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


0

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


Что если это большой наклонный треугольник? Разве вы не можете найти точку пересечения луча?
Gustavo6046

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

О, да. Взвешенная средняя. Я думаю, что я неправильно понял это. Виноват.
Gustavo6046
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.