Кратенько. Для понимания в общих чертах. Движок состоит из мира. Этот мир имеет некоторые настройки для управления эмуляцией поведения абсолютно твердых тел, которыми наполнен.
Тела могут быть любой формы. Параллелепипеды, окружности, полигоны, составные.
Тела могут быть статические - абсолютно неподвижные, тем не менее обладающие свойствами трения и упругости (friction, restitution).
Тела могут быть динамическими. Для них, помимо трения и упругости, стоит помнить о свойстве плотность (density, масса на единицу площади). Также, вероятно, придется воспользоваться свойствами bullet и sensor. Первое предназначено для предотвращения прохождения быстрых тел сквозь препятствия и может заметно просадить производительность. Второе - помогает соприкасающимся телам не замечать столкновений.
К телам, помимо гравитации мира (которой может и не быть), можно применить другие силы, воздействовать на них импульсом или прямо присвоить линейную или угловую скорость.
Все тела взаимодействуют через столкновения (collisions), над которыми в библиотеке имеется достаточный контроль через слушатели или contact list.
Вторыми по значимости после тел в мире - joint'ы. Это "связыватели" тел. Их много разных: b2DistanceJointDef, b2RevoluteJointDef, b2PrismaticJointDef, b2PulleyJointDef, b2GearJointDef, b2MouseJointDef. Также: Wheel, Weld, Rope, Friction, Motor для ограничения степеней свободы тел в joint'ах.
Это - если коротенько. Подробности здесь.
Комментариев нет:
Отправить комментарий