В Constuct 2 для использования физики в игре существует специальное поведение - Physics (работающее на Box2DWeb). Оно позволяет перемещать объекты с использованием реальной физики - вот пример, чтобы показать суть. Физика поможет сделать Ваши игры по-настоящему веселыми и привлекательными.
Если вы в школе изучали физику, то найдете некоторые сходства физики Construct 2. В уроке я буду вкратце объяснять базовые моменты. Заинтересованы в более подробном изучении теорий физики? Тогда можете почитать на Википедии статью Законы Ньютона. Думаю это тоже пригодиться ссылка (англ.) .
Вместе с Construct 2 идет большое количество примеров. Нажмите на Browse all example на стартовом экране программы. Все примеры, связанные с физикой начинаются на "Physics - ", например, "Physics - basics.capx". Рекомендую взглянуть.
Как добавить физику
Кликните на объект, к которому нужно добавить физику. В окне свойств (Properties), нажмите Add / Edit under Behaviors. Далее нажмите на зеленый плюс и в открывшимся окне выберите Physics. Готово!
Гравитация
Изначально на все объекты действует гравитация, которая ускоряет их вниз. По умолчанию, сила гравитации равна 10 (напомню, увеличение координаты Y - это вниз в Construct 2). Если хотите отключить (или изменить) гравитацию, то используйте действие Set world gravity .
Примечание: сила гравитации относится ко всему миру, т.е. ко всем объектам. Например, если отключить гравитацию у одного объекта, то гравитация будет отключена у всех.
Неподвижные объекты
Если применить к полу поведение Физики, то Вы заметите, что он упадет вниз за экран. Чтобы этого не произошло, есть свойство Immovable. Это даст объекту бесконечную массу, другими словами объект станет неподвижным. Чтобы задать неподвижность, нужно выбрать Yes возле свойства Immovable.
На заметку: Физические объекты взаимодействуют только с физическими объектами. Добавление поведения Твердый (Soild) не даст эффекта, объекты с физикой просто-напросто проигнорируют этот объект.
Другие свойства Физики
Давайте рассмотрим некоторые свойства физических обектов
Маска столкновений (Collision mask)
Задает форму при обработке столкновений.
По умолчанию используется Use collision polygon. В редакторе изображений при помощи инструмента collision polygon tool можно задать точки столкновения. Осторожно, не используйте много точек, это может повлиять на производительность игры.
Если задан Bounding box, то объект будет считаться прямоугольной формы, а если выбран Circle, то круглой. В обоих случаях точки столкновений, указанные в редакторе изображений, будут игнорироваться.
Предотвращение вращения (Prevent rotation)
Если включено, то объект никогда не будет вращаться (даже если упал на глядящий угол). Это очень полезно, когда углами управляете Вы самостоятельно. Например, без включения этой опции в платформере, Игрок, при попытки бежать, спотыкается и падает на лицо.
Плотность (Density)
Плотность используется, чтобы определить массу объекта.
Масса объекта вычисляется как плотность, умноженная на размеры объекта. Т.е. при одинаковой плотности, огромные предметы имеют бОльшую массу чем маленькие.
Трение (Friction)
Трение определяет, насколько замедлится один объект, двигаясь по поверхности другого. Нулевое трение похоже на коньки на льду, а высокое - на движения кирпича по бетону.
Эластичность (Elasticity)
Эластичность (или "пружинистость" или "реституция") определяет насколько "прыгучий" объект.
Линейное демпфирование (Linear damping)
Нулевое значение означает, что объект будет двигаться как в космосе, т.е. продолжать движение всегда. Увеличение значения заставляет объекты постепенно замедлятся, что в конечном счете приведет к остановке. Похоже на сопротивление воздуха.
Угловое демпфирование (Angular damping)
Угловое демпфирование очень похоже на линейное, но здесь замедляется вращение. Опять же, в космосе, вращения не замедляются, поэтому предметы будут вращаться вечно. Чем выше значение, тем быстрее объект будет замедлять свое вращение.
Примечание: Скорость движения не влияет на замедление вращения.
Советы при работе с Физикой
Производительность
Физика - очень интенсивный потребитель центрального процессора. Могут потребоваться больше ресурсы. Не рекомендуется использовать более чем 100 подвижных объектов, иначе это может серьезно повлиять на производительность. Кроме того, у телефонов и планшетов еще более ограниченные ресурсы, и если игра будет на них, то стоит быть осторожным, постараться использовать 20-30 объектов максимум.
Также хочется сказать о "спящих" объектах. Если объект не двигается (совсем), то он переходит в "спячку" - он больше не требует обработку физики и это существенно экономит ресурсы.
Стабильность
Иногда моделирование физики не совсем настоящее. Если Вы создаете не реалистичные вещи, например гигантский конкретный объект, летящий на скорости звука, то результат не будет реалистичным. Постарайтесь все держать в разумных пределах. Старайтесь не создавать быстродвижушихся тяжелых вещей. Лучше всего объекты размером 5-500 пикселей, без чудовищных пропорций типа 5x500.
Иначе говоря, чтобы физика вела себя реалистично, старайтесь создавать объекты реалистичными.
Ручное Движение И Другие Поведения
Если перемещать объекты действиями (например, SetX или SetY), или другими проведениями (8-Direction, например), то физика будет стараться не отставать от этого. Но все же, рекомендую использовать силы и импульсы, это позволит держать все объекты "в физическом мире" и сделает их более реалистичными.
Вы можете совместить поведения Платформер'а и Физики, но они не особо уживаются. Опять таки, лучше всего использовать силы для этих целей. См. пример "Physics - rolling platformer.capx".
Заключение
Физика может быть действительно забавной, но не забывайте избегать огромного количества подвижных физических объектов, старайтесь перемещать объекты только силами и импульсами. И не помешает знать теоретическую часть физики.
Понравилась физика? Смотрите следующий урок, посвященный физике: Physics in Construct 2: Forces, impulses, torque and joints.