Коллайдеры и физика пола в 3D-играх
16.10.2024 06:53:27
16.10.2024 06:53:27
- с помощью расплющенного и вытянутого куба (или отдельной, более сложной, модели): подходит для внутренних помещений с относительно плоским полом
- с помощью объекта Terrain (местность): больше подходит для открытых локаций с неровным ландшафтом
Про куб/модель рассказывать особенно нечего: этот подход, разве что, может вызвать недоумение у начинающего гейм билдера, потому что, сделав такой пол, поставив на него игрока и запустив симуляцию, он увидит, как игрок быстро и свободно провалился сквозь пол и бесконечно летит в бездну под действием гравитации.
Происходит это потому, что геометрия объекта и его физические свойства в движках, в большинстве случаев, - отдельные сущности, и то, что вы добавили куб на сцену, совершенно не говорит движку о том, что это твердый объект и другие твердые объекты должны с ним сталкиваться и взаимодействовать.
Впрочем, этот вопрос легко решается с помощью коллайдеров (нет, не адронных). Коллайдер - это невидимый объект, который отслеживает коллизии (столкновения) и инициирует физические процессы в зависимости от настроенных физических свойств объектов. Физическое свойство - это, например, упругость. Пол может быть рыхлым, как земля, или, например, металлическим. В зависимости от этого шарик, упавший на него, будет по-разному отскакивать. При этом сам шарик (этот стандартный объект в 3D-движках называется "сфера") тоже обладает своими настраиваемыми физическими свойствами, которые будут влиять на то, с какой скоростью он падает под действием гравитации, и как сильно отталкивается при столкновении с другим физическим объектом.
Коллайдеры обычно представляют из себя примитивные формы (куб/параллелепипед, сфера, цилиндр) и настраиваются поверх видимых, более сложных, многополигональных объектов. Как несложно догадаться, такой подход позволяет тратить меньше вычислительных мощностей на проверку взаимодействий, ведь отследить пересечение одной сферы с одним кубом несравнимо проще, чем проверить взаимодействие сотен и тысяч треугольников друг с другом.
Многие, наверняка, видели, как в играх иногда происходит явление, которое называют "провалился в текстуры". Вот это происходит из-за того, что где-то стены или пол отрисовали, а коллайдер добавить забыли, или размер видимого объекта после добавления изменили, а размер коллайдера нет. Он же невидимый, поэтому такой момент достаточно легко пропустить.
Сильно останавливаться на физике не буду, потому что в проекте ее будет немного. Жанр подразумевает только прием ввода от игрока и визуализацию ответа от сервера, физика будет использоваться только для анимаций (как полотна ткани, развивающиеся на ветру) и эффектов.



Qwuack
