В GameMaker маски спрайтов широко используются для обнаружения столкновений и определения границ объектов. Однако иногда вам может потребоваться запретить вращение масок спрайтов вместе с самим спрайтом. Это может быть полезно, если вы хотите обеспечить постоянное обнаружение столкновений или добиться стабильных визуальных эффектов. В этой статье блога мы рассмотрим несколько способов предотвращения вращения масок спрайтов в GameMaker, сопровождаемые примерами кода.
Метод 1: отключить автоматическое вращение маски спрайта
По умолчанию GameMaker автоматически поворачивает маску спрайта вместе со спрайтом. Чтобы предотвратить это автоматическое вращение, вы можете отключить опцию «Использовать угол спрайта» в свойствах спрайта. Вот пример того, как этого добиться:
- Откройте свойства спрайта, дважды щелкнув его в дереве ресурсов.
- В окне «Свойства спрайта» снимите флажок «Использовать угол спрайта».
- Сохраните изменения и закройте окно.
При использовании этого метода маска спрайта больше не будет вращаться при вращении спрайта.
Метод 2: отдельные объекты спрайта и маски
Другой подход — разделить спрайт и маску на отдельные объекты. Делая это, вы получаете больше контроля над их индивидуальными преобразованиями. Вот пример реализации этого метода:
- Создайте новый объект для спрайта и назначьте ему нужный спрайт.
- Создайте еще один объект для маски и назначьте ему отдельный спрайт, представляющий форму маски.
- Установите положение объекта маски так, чтобы оно соответствовало положению объекта спрайта.
- В событии Step объекта маски добавьте следующий код:
x = obj_sprite.x; y = obj_sprite.y;
Используя отдельные объекты для спрайта и маски, вы можете манипулировать ими независимо, позволяя маске оставаться фиксированной во время вращения спрайта.
Метод 3: вращение маски вручную
В этом методе вы вручную поворачиваете спрайт и регулируете положение маски, чтобы компенсировать вращение. Вот пример:
- В событии Step объекта спрайта добавьте код для поворота спрайта:
image_angle += 1; // Example rotation
- В событии Step объекта маски добавьте следующий код для настройки положения маски:
x = obj_sprite.x + lengthdir_x(obj_sprite.image_angle, mask_distance); y = obj_sprite.y + lengthdir_y(obj_sprite.image_angle, mask_distance);
В приведенном выше коде
mask_distance
— это расстояние между спрайтом и началом маски.
Регулируя положение маски вручную в зависимости от вращения спрайта, вы можете добиться желаемого эффекта фиксированной маски.
Предотвратить вращение масок спрайтов в GameMaker можно различными способами. Вы можете отключить автоматическое вращение маски спрайта, разделить объекты спрайта и маски или вручную отрегулировать положение маски. Каждый метод обеспечивает различную степень контроля в зависимости от ваших конкретных требований. Поэкспериментируйте с этими методами, чтобы добиться стабильной графики и точного обнаружения столкновений в ваших проектах GameMaker.