This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold включает модифицированную версию физического движка Box2D (версия 2.2.1) для симуляций 2D-физики, а также физический движок Bullet (версии 2.77) для 3D-физики. Это позволяет симулировать ньютоновские физические взаимодействия между разными типами объектов столкновения. Данное руководство объясняет принцип работы этих движков.
Основные концепции физических движков, задействованных в Defold следующие:
В дополнении к объектам столкновения также можно задать ограничения объектов столкновения, более известные как сочленения (joints), чтобы соединить два объекта столкновения и ограничить или иными способами направить силу и повлиять на то, как они ведут себя в физической симуляции. Узнайте больше о сочленениях.
Вы также можете прощупывать и считывать физический мир вдоль линейного луча известного как проекционный луч. Узнайте больше о проекционных лучах.
Физические движки симулируют ньютоновскую физику и спроектированы для гладкой работы с метрами, килограммами и секундами (мкс) в качестве единиц измерения. Более того, физический движок откалиброван, чтобы гладко работать с движущимися объектами размеров в диапазоне от 0.1 до 10 метров (статические объекты могут быть больше), и по умолчанию движок трактует 1 единицу (пиксель) как 1 метр. Конвертация между пикселями и метрами удобна на уровне симуляции, но с точки зрения создания игры — это не очень полезно. Со стандартными настройками форма столкновений размером в 200 пикселей будет трактоваться как имеющая размер 200 метров, что далеко за пределами рекомендуемого диапазона, по крайней мере для движущегося объекта.
В целом, требуется, чтобы физическая симуляция была отмасштабирована для того, чтобы гладко работать с типовым размером объектов в игре. Масштаб физической симуляции может быть изменен в файле game.project в настройках масштаба физики. Выставление этого значения в, например 0.02, будет означать, что 200 пикселей будут трактоваться как 4 метра. Учтите также, что гравитация (также меняется в game.project) должна быть увеличена для согласования с измененным масштабом.
Рекомендуется обновлять физический движок с фиксированным интервалом времени для обеспечения стабильной симуляции (в отличие от обновлений с переменной частотой кадров). Вы можете использовать фиксированное обновление физики, установив флажок Use Fixed Timestep setting в разделе Physics файла game.project. Частота обновления задаётся параметром Fixed Update Frequency setting в разделе Engine того же файла. При использовании фиксированного шага времени для физики также рекомендуется использовать функцию жизненного цикла fixed_update(self, dt)
для взаимодействия с объектами столкновений вашей игры, например, при применении к ним сил.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB