Physics Engine содержит ряд настроек мира и контролирует объекты в физическом мире.
Свойства движка Physics Engine
- Gravity (Вес)
- Gravity strength (Сила тяжести)
Параметр силы тяжести в физическом мире. Значение земного тяготения составляет около 10 (точно 9,81), поэтому значение по умолчанию для этого свойства установлено 10.000000. Вы можете изменить это значение в соответствующем действии. - Gravity angle (Направление силы тяготения)
На Земле гравитация направлена, как бы, вниз, но вы можете установить направление притяжение в любую сторону.
Направление силы тяжести также может быть изменено с применением действия.
- Gravity strength (Сила тяжести)
- Backdrops (Декорации / фон / элементы препятствий)
- Add backdrop objects to the world (Использовать объекты backdrop для мира)
Если этот пункт выбран, любой фон Backdrop или Quick-Backdrop будут в мире препятствием или платформой (в зависимости от типа этих объектов). В результате любой физический объект может столкнуться с ними.
Пожалуйста, обратите внимание, что эти фоновые объекты не могут двигаться в физическом мире. Их позиция устанавливается в начале кадра. - Friction (Трение)
Это параметр трения или характера поверхности. В значение ноль все объекты будут сильно скользить по элементам препятствий, в значение 100 — не будут скользить совсем. - Elasticity (Упругость)
Значение упругости объектов фона. Упругость 100 будет заставлять сильно отпрыгивать сталкивающиеся с фоном объекты, эластичность 0 остановит сталкивающиеся объекты. Промежуточное значение определит силу отскока.
- Add backdrop objects to the world (Использовать объекты backdrop для мира)
- Projectiles (Пули / Снаряды)
- Create projectiles in the physical world (Создавать пули в физическом мире)
Если установлен этот параметр, то в действии Launch an object будет создаваться пуля физического мира, но при условии, что объект, из которого пуля запущена имеет один из физических движений. Если одно из этих условий ложно, то будет создана обычная (не физическая) пуля. - Density (Плотность)
Плотность пуль, созданных действием Launch an object. При плотности равной 100 пуля будет тяжелее, и, следовательно, труднее перемещать при столкновении с другими объектами, но другой стороны, пуля будет сильнее толкать статические объекты. Меняя значение плотности вы меняете массу пуль. Масса объекта вычисляется в физике из значений плотности и размеров объекта. - Friction (Трение)
Это свойство определяет, как пули ведут себя, когда они сталкиваться с другим объектами. Значение трения от 0 до 100 определит насколько скользящими будут пули. - Elasticity (Упругость)
В значении 0 пуля остановится, как только столкнется с другим объектом. В значении 100 пули будут отскакивать, сохраняя динамику их движения. Промежуточные значения изменяют этот импульс. - Gravity scale (Гравитация масштаб)
Это процентное значение, указывающее, насколько сильно сила тяжести будет действовать на пулю. Значение 100 — нормальная гравитация, в соответствии с силой притяжения установленной в движке Physic Engine. Значение 0 позволит пули лететь по прямой линии. Значение 200 увеличит в 2 раза силу притяжения действующую на пулю, и, таким образом, пуля упадет быстрее.
- Create projectiles in the physical world (Создавать пули в физическом мире)
- Non-physical objects (Не физические объекты)
- Insert non physical objects in the world (Использовать не физические объекты в физическом мире)
Если флажок установлен, все классические объекты, также будут работать в физическом мире. Они будут взаимодействовать с объектами физического мира при столкновении. Но они не являются истинными физическими объектами. Лучше избежать использование не физических объектов вместе с физическими и прибегать к этому только при необходимости.
Эта опция очень удобна, если у вас есть вы объекты с движением по траектории, которые вы хотите использовать в физическом мире.
Предупреждение. Если эта опция будет добавлена, то все не физические объекты, такие как scores , lives , buttons , strings и т.д., которые могут тормозить работу движка. Лучше всего использовать использовать действие «Add object to world» вместо этого. - Density non-physical (Плотность не физических)
Это свойство содержит плотность не физических объектов, добавленных в физический мир. - Friction non-physical (Трение не физических)
Это свойство содержит трение не физических объектов, добавленных в физический мир.
- Insert non physical objects in the world (Использовать не физические объекты в физическом мире)
- Advanced (Расширенные настройки)
- Engine ID (ID движка)
Это свойство следует изменять только если вы решите использовать более одного объекта физического движка в кадре (например для того что бы сделать разную силу тяжести). Это свойство содержит номер (он должен быть уникальным), затем этот номер прописывается в свойствах объектов, что бы указать какому движку он подчиняется. - Display factor (Фактор отображения)
Box2D работает с единицами измерения в метрах и килограммах. В Clickteam Fusion 2.5 размеры кадра и объектов исчисляются в пикселях. Это свойство содержит коэффициент умножения и координирует размеры Clickteam Fusion 2.5 при передаче их в физический мир. Значение 32 означает, что объект 32 пикселей в ширину, будет иметь ширину 1 м в физическом мире.
Значение 32 отлично работает для большинства игр. Но если ваша игра содержит очень большие объекты, движок не может справиться с ними. Поэтому вы должны, изменить это значение в зависимости от размера ваших объектов. Более высокое значение уменьшает размер объектов в физическом мире. Меньшее значение увеличивает их.
Также стоит отметить, что как результат расчета, объекты двигаются быстрее с более низкими значениями этого свойства. - Velocity iterations (Скорость итераций)
Это свойство используется, чтобы определить точность обработки физического мира. Движок работает, оценивая столкновения различных объектов, чем больше значение этого параметра, тем точнее результат вычислений, но и медленнее движок.
Значение по умолчанию 6 должно быть достаточным для большинства игр. Но если в вашей игре какая-то сложная реализация, которая требует большой точности, то необходимо увеличить это значение. Пожалуйста, обратите внимание, что это будет экспоненциально тормозить движок.
Можно, например, установить это свойство в более высокое значение, что бы точно произвести вычисления в начале кадра, а затем стабилизировать, установив его в меньшее значение во время игры, с помощью действия «Set iterations«. - Position iterations (Итерация позиции)
Это свойство похоже на предыдущее, и влияет на вычисление положения объектов в физическом мире. Значение по умолчанию 2 должно быть достаточно для большинства игр, но вы также можете увеличить, если для вас движок не будет достаточно точным. Чем выше значение, тем медленнее будет движок, поэтому выбор правильной величины должен быть результатом практической оценки.
- Engine ID (ID движка)
Действия движка Physics Engine
- World
- Add object to world Добавить объект в мир.
Позволяет вставлять не физические объекты (например, активный объект с простым движением) в физическом мире.
Эта функция позволяет использовать простой тип движения path в физическом мире. Например, когда вы делаете движущуюся платформу или врагов-охранников, которые движутся из стороны в сторону. Просто добавьте не физический тип движения по траектории в мир. - Remove object from world
Это действие удалят объект, который был добавлен в физический мир. Он не разрушает объект, объект будет оставаться на сцене, но станет не физическим. - Set gravity force
Это действие изменяет текущий коэффициент силы притяжения в мире. Значение 10 (точно 9,81) совпадает с земной гравитацией. Вес 0 создаст невесомость. - Set gravity angle
Это действие изменяет направления силы притяжения. Угол в градусах (от 0 до 360). Все объекты мира будут мгновенно реагировать на изменение угла притяжения. - Set iterations
Изменение точности вычислений движка путем установки количества итераций, выполняемых движком. Первым параметром является скорость итераций (значение по умолчанию 6), и второй параметр — это количество итераций (значение по умолчанию равно 2). Подробнее об это свойство еще будет описано ниже.
- Add object to world Добавить объект в мир.
- Objects
В действиях движка можно менять физические параметры (плотность, трение, гравитационной масштаб и упругость) любого физического объекта. - Joints
Clickteam Fusion 2.5 позволяет создавать различные типы соединений, поддерживаемых Box2D. Вы должны ввести имя, когда вы создаете соединение, так как это имя будет использоваться для обращение к суставу. Позволяя вам делать следующее:- Distance joints
Расстояние между двумя соединенными объектами. Для того, что бы применять это действие два тела уже должны быть на соединены.
- Joint two objects at hot spots
Создает дистанцию сустава в месте расположения горячей точки (hot spot — точка привязки координат со значком глаза) двух объектов. После создания расстояние между двумя объектами будет оставаться постоянным (если только на объект не будет оказано действительно сильное воздействие). - Joint two objects at action point
Создает дистанцию сустава в месте расположения активных точек (action point — квадратная) связаных объектов. - Joint two objects at position
Создает дистанцию соединения в заданных координатах внутри объектов. Вам нужно будет указать значения смещения от точки реальной координаты (hot spot) объектов. - Set joint elasticity
Делает пружинное соединение между двумя объектами, как будто они соединены резинкой. Это действие принимает два параметра: первый — частота колебаний пружины/резинки, в герцах (Гц). Значение 10 заставит резинку сокращаться 10 раз в секунду. Вы не должны вводить значения выше 30 (для FPS приложений — 50). Второй параметр — коэффициент затухания, значение от 0 до 100: значение 0 приведет к тому, что резинка всегда будет колебаться, 100 будет останавливаться мгновенно.
- Joint two objects at hot spots
- Revolute joints
Когда скреплены два объекта, где будет их ось вращения? Осью вращения может являться точка координат одного из объектов или точка соединения этих объектов.
- Joint two objects at hot spot
Создает ось вращения на месте расположения точки координат (hot spot) первого объекта. Объекты будут вращаться вокруг своей оси, и также они не отделяются друг от друга. - Joint two objects at action point
Создает ось вращения на месте расположения активной точки (action point) первого объекта. Объекты будут вращаться вокруг своей оси, и также они не отделяются друг от друга. - Joint two objects at position
Создает ось вращения в заданных координатах первого объекта. Значение является смещением от горячей точки (hot-spot) объекта. - Set joint angle limits
Действие позволяет ограничить вращение второго объекта в конкретной области угла. Он принимает два параметра, меньший предел угла (значение в градусах от 0 до 360), и верхний предел угла (выражается в градусах от 0 до 360). Если оба значения равны 0, предел будет удален (не будет предела вращения). - Set joint motor
Заставляет принудительно вращаться второй объект. Действие создает «крутящий момент». Первый параметр — по часовой или против часовой, значение от -250 (вращение против часовой стрелки) до +250 (вращение по часовой стрелке), второй параметр — скорость вращения, значение от 0 до 100.
- Joint two objects at hot spot
- Prismatic joints
Призматическое соединение придает относительное перемещение двух объектов вдоль указанной оси. Призматическое соединение предотвращает относительное вращение вокруг оси. Таким образом, призматическое соединение имеет одну степень свободы.
- Joint two objects at hot spot
Создает призматические соединения в месте расположения горячей точки (hot-spot) двух объектов. После того, как соединение создано, объекты будут оставаться в той же оси. - Joint two objects at action point
Создает призматический сустав в месте расположения активной точки (action point) двух объектов. - Joint two objects at position
Создает призматическое соединение в заданных координатах внутри объектов. Значения добавляет смещение от горячей точки (hot-spot) объектов. - Set joint translation limits
Действие позволяет ограничить движение объектов до определенной части оси. Первый параметр является нижним пределом, задается в пикселях от позиции первого объекта, а второй параметр, верхний предел, также выражается в пикселях от первого объекта. - Set joint motor
Действие приводит в движение второй объект от (или к) первого объекта. Первым параметром является направление движения, значение от -250 (сближает объекты) до 250 (объекты движутся друг от друга). Вторым параметром является скорость движения, значение от 0 до 250.
- Joint two objects at hot spot
- Pulley joints
Шкив соединяет два объекта с планкой и друг с другом. Когда один объект поднимается вверх, другой опускается вниз.- Joint two objects at hot spot
Создает соединение шкив на месте расположения горячей точки двух объектов. Вы должны указать длину (в пикселях) и угол (в градусах от 0 до 360) веревки, прикрепленной к двум объектам. После того, как объекты создаются, они будут связаны друг с другом невидимой веревкой. Последний параметр является передаточным отношением, значение от 0 до 100. - Joint two objects at action point
Создает соединение шкива в месте расположения активной точки двух объектов. Как и в предыдущем действии, вы должны указать длину (в пикселях) и угол (в градусах от 0 до 360) веревок, прикрепленных к двум объектам. Последний параметр представляет собой передаточное отношение, значение от 0 до 100. Например, если использовать значение 50, второй объект будет двигаться в половину скорости первого объекта.
- Joint two objects at hot spot
- Distance joints
- Destroy joint
Действие уничтожает сустав. После этого объекты будут свободно перемещаться.
События движка Physics Engine
Сам объект движка Physics Engine не содержит никаких событий или условий.
Значения движка Physics Engine для различных выражений
- Gravity
- Angle
Возвращает текущее направление гравитации, выраженная в градусах (от 0 до 360). - Strength
Возвращает текущую силу тяжести, выраженная в метрах за секунду в квадрате.
- Angle
- Iterations
- Velocity iterations
Возвращает текущее число итераций скорости. - Position iterations
Возвращает текущее количество итераций позиции.
- Velocity iterations
- Distance joints
- Frequency
Возвращает коэффициент упругости в суставах, измеряется в герцах, и является значением заданном в действии «Set elasticity». - Damping
Возвращает коэффициент затухания в суставах, значение от 0 до 100, и является значением заданном в действии «Set elasticity».
- Frequency
- Revolute joints
- Lower angle limit
Возвращает нижний предел угла сустава, значение, выраженное в градусах, которое определено в действии «Set angle limit». - Upper angle limit
Возвращает верхний предел угла сустава, значение, выраженное в градусах, которое определено в действии «Set angle limit». - Motor strength
Возвращает моторную силу в суставе (вращательный момент), значение от 0 до 100, которое определено в действии «Set motor». - Motor speed
Возвращает скорость вращения в суставе, значение от 0 до 100, которое определено в действии «Set motor».
- Lower angle limit
- Prismatic joints
- Lower translation limit
Возвращает нижний предел ограничивающий движение объектов по оси, значение, выраженное в пикселях, и является значением заданном в действии «Set translation limit». - Upper translation limit
Возвращает верхний предел ограничивающий движение объектов по оси, значение, выраженное в пикселях, и является значением заданном в действии «Set translation limit». - Motor strength
Возвращает моторную силу в суставе (вращательный момент), значение от 0 до 100, которое определено в действии «Set motor». - Motor speed
Возвращает скорость вращения в суставе, значение от 0 до 100, которое определено в действии «Set motor».
- Lower translation limit
Это нужно знать о Physics Engine Object
Замечания, касающиеся физических движений в Clickteam Fusion 2.5, и так их обрабатывает движок физики.
Большие и плотные объекты
Движок не может справиться с объектами, которые являются слишком тяжелыми. Тяжелыми предметами являются крупные объекты с плотностью, близкой к 100. Если свалить такие объекты в кучу, то они будут вызывать ошибки расчетов движка и объекты будут мерцать на экране.
Можно решить эту проблему путем уменьшения плотности объектов.
Вы также можете решить эту проблему путем увеличения скорости и позиции итераций в движке Physics Engine Object, либо изменив масштаб.
Груды объектов не могут стабилизироваться
Если ваш кадр содержит кучу объектов, и если эта куча не останавливается в статическом положении через некоторое время, это может быть связано с неточностью расчетов в физическом движке. Параметры движка устанавливаются, чтобы был баланс между скоростью выполнения и точностю вычислений. Вы можете увеличить эту точность в течение определенного периода времени (в начале кадра в событии start of frame), а когда все объекты найдут свое место, вернуть ее к нормальному значению.
Чтобы сделать это, вы должны использовать действие «Set engine iterations» в движке Physics Engine object. Значение по умолчанию составляет 6 и 2. Вы можете увеличить, чтобы увидеть результат.
Движущиеся объекты, кажется, сталкиваются далеко от фоновых объектов
Эта проблема может возникнуть, если ваш объект имеет вогнутую форму. Box2D не принимает вогнутые формы. Вы должны сократить свой объект в несколько, выпуклых объектов.
Более подробная информация здесь.
Народ, черкните в комментах был ли для вас полезен перевод и нужны ли другие переводы? Спасибо.