Забыли пароль?
Регистрация
Коллайдеры и физика пола в 3D-играх
16.10.2024 06:53:27
Пол/земля/ландшафт в 3D-движках создаются обычно двумя способами:
- с помощью расплющенного и вытянутого куба (или отдельной, более сложной, модели): подходит для внутренних помещений с относительно плоским полом
- с помощью объекта Terrain (местность): больше подходит для открытых локаций с неровным ландшафтом

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

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

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

Коллайдеры обычно представляют из себя примитивные формы (куб/параллелепипед, сфера, цилиндр) и настраиваются поверх видимых, более сложных, многополигональных объектов. Как несложно догадаться, такой подход позволяет тратить меньше вычислительных мощностей на проверку взаимодействий, ведь отследить пересечение одной сферы с одним кубом несравнимо проще, чем проверить взаимодействие сотен и тысяч треугольников друг с другом.

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

Сильно останавливаться на физике не буду, потому что в проекте ее будет немного. Жанр подразумевает только прием ввода от игрока и визуализацию ответа от сервера, физика будет использоваться только для анимаций (как полотна ткани, развивающиеся на ветру) и эффектов.



15.11.2026 Qwuack продал mik 10.00 золотых кредитов на аукционе за 163.00 обычных.
15.11.2026 Виконт заработал 326991 опыта за последние сутки.
14.11.2026 Remos продал Baunatal_2.0 20.00 золотых кредитов на аукционе за 323.00 обычных.
14.11.2026 Remos продал Baunatal_2.0 20.00 золотых кредитов на аукционе за 323.00 обычных.
14.11.2026 Remos продал Baunatal_2.0 20.00 золотых кредитов на аукционе за 323.00 обычных.
14.11.2026 Remos продал Baunatal_2.0 20.00 золотых кредитов на аукционе за 323.00 обычных.
14.11.2026 Remos продал Baunatal_2.0 20.00 золотых кредитов на аукционе за 323.00 обычных.
14.11.2026 Remos продал Baunatal_2.0 20.00 золотых кредитов на аукционе за 323.00 обычных.
14.11.2026 Remos продал Baunatal_2.0 20.00 золотых кредитов на аукционе за 325.00 обычных.
14.11.2026 Remos продал Baunatal_2.0 20.00 золотых кредитов на аукционе за 323.00 обычных.
14.11.2026 Remos продал Baunatal_2.0 20.00 золотых кредитов на аукционе за 325.00 обычных.
14.11.2026 Remos продал Теся 20.00 золотых кредитов на аукционе за 325.01 обычных.
14.11.2026 Skystorm заработал 307282 опыта за последние сутки.
13.11.2026 Skystorm заработал 109108 опыта за последние сутки.
12.11.2026 База киборгов 1 уровня пала под натиском наших бойцов.
12.11.2026 База киборгов 1 уровня пала под натиском наших бойцов.
12.11.2026 Skystorm заработал 319447 опыта за последние сутки.
11.11.2026 Qwuack продал DeN 10.00 золотых кредитов на аукционе за 158.01 обычных.
11.11.2026 Skystorm заработал 222309 опыта за последние сутки.
10.11.2026 Skystorm заработал 999245 опыта за последние сутки.
Начать игру
Рейтинг игроков
Ноябрь 2026


Укуренный Ёжик 18
Militaris* 15
!Лис! 12
Виконт 15
Африканец 14
Серго 14
Мартосик 12
mouse* 12
roma 11
Одеяло 14
Рейтинг кланов
Ноябрь 2026


60 PHOENIX 7.1
54 Гринпис 1.0
46 Полиция 3.0
38 ANGELS 2.1
37 Волчья Стая 2.0
35 Immortals 2.0
22 Эволюция 0.0
20 T.R.I.A.D.A. 0.1
Все кланы
Чемпионат
Сентябрь - Ноябрь


PHOENIX 25 (13, 12)
Полиция 18 (16, 2)
Гринпис 9 (9, 0)
Волчья Стая 6 (6, 0)
Сектор 13 2 (0, 2)
ANGELS 2 (0, 2)
Мафия 0 (0, 0)
Legion 0 (0, 0)
Alkatraz 0 (0, 0)
Resident Evil 0 (0, 0)
Все кланы
Союзы


Titanium
Nuntios Caeli
Bang!
Социальные сети


Группа ВКонтакте
Дневник разработчика