Добрый день, дорогие читатели! Сегодня в этой краткой статье хотелось бы рассказать о том, что не упомянул в прошлых уроках. Как только вы включаете галочку использования физики в комнате и на объекте, то важно помнить о некоторых вещах.
Группы столкновений (коллизий)
В прошлых уроках я не затронул один из таких важных физических параметров объекта, как Collision Group:
По умолчанию, физические объекты между собой не сталкиваются и никак не взаимодействуют. Для столкновения необходимо, чтобы оба объекта были включены в одну и ту же группу столкновений. Т.е. если вы хотите, чтобы два объекта, например, шар и куб сталкивались между собой, то необходимо в параметрах им назначить одинаковую группу столкновений (1, 2, 3 и т.д.).
Но, во-первых, сами создатели движка GMS, не рекомендуют пользоваться таким способом, а ,во-вторых , если уж без этого никуда, то рекомендуют использовать как можно меньше данных групп (все они должны иметь положительное число!)
Но как же сделать так, чтобы физические объекты автоматически обрабатывали столкновения, но при этом без использования групп? Есть очень простой способ. Для этого вам всем объектам необходимо назначить нулевую группу 0. Это значит, что объекты в этой группе будут сталкиваться только в том случае, если вы принудительно пропишите столкновения в объектах. А чтобы это сделать, достаточно в объект добавить событие столкновения с нужным нам объектом:
При этом никакой код писать в самом событии не требуется! Достаточно просто оставить в нем комментарий:
Т.е. в одном объекте просто создаем несколько таких событий столкновений с нужными нам объектами и все. Я лично пользуюсь именно таким способом, а не группами.
Если вы в группе столкновений укажите какое-нибудь отрицательное число (а не ноль и не положительное), то объекты в такой группе вообще не будут сталкиваться ни при каких обстоятельствах (ни по умолчанию, ни при наличии события столкновения в объекте).
Форма столкновения (Fixture)
При "обычной" системе коллизий ваши коллизии основаны на маске спрайта, назначенного объекту, но при включенной физике это уже не так.
При включенной физике вам нужно самим назначить объекту форму столкновения (она называется Fixture), которая может быть либо кругом, либо прямоугольником, либо многоугольником (не вогнутым!) с кол-вом вершин от 3 до 8. Эти формы вы сами назначаете объекту и редактируете в параметрах объекта через Modify collision shape:
Отключение функций движения и переменных "обычной" системы
Как только вы включили галочку "физика" знайте, что многие другие функции (и встроенные переменные) перестают работать в физическом мире. Большая часть из них связана с движением. Например, встроенные переменные скорости: speed, vspeed и hspeed в физическом мире вы уже не сможете использовать. Или, например, функции движения: motion_add, move_snap, move_wrap, move_towards_point, mp_linear_step и многие-многие другие. По этому, если в физическом мире GMS у вас что-то не получается реализовать, какие-то функции не работают, то не спешите паниковать, вероятнее всего они просто не могут быть использованы при используемом физическом движке Box2D.
Очень важно помнить об этих трех основных особенностях в Game Maker Studio при включенном физическом движке Box2D.
Спасибо, что дочитали статью до конца! Надеюсь она окажется вам полезной. Ставьте лайки, делитесь ей с другими, задавайте вопросы, оставляйте комментарии, пожелания и т.д. Удачи с изучением!