Довідка game maker 8

переміщення

Очевидно, важливим аспектом гри є переміщення примірників об'єкта. Кожен екземпляр об'єкта має дві вбудовані змінних x і y, які вказують позицію цього примірника. Точніше, вони вказують місце, де встановлений центр (origin) спрайту. Позиція (0,0) є лівим верхнім кутом кімнати. Ви можете змінити позицію примірника об'єкта, змінивши змінні x і y. Якщо Ви хочете зробити руху об'єкта більш складними, то це хороший спосіб. Ви зазвичай будете поміщати цей код в подія кроку для об'єкта.

Якщо об'єкт переміщується з постійною швидкістю і напрямком, тобто спосіб легше, щоб досягти цього. Кожен екземпляр об'єкта має горизонтальну швидкість (hspeed) і вертикальну швидкість (vspeed) (пікселів за крок). Позитивна горизонтальна швидкість означає рух направо, а негативна горизонтальна швидкість означає рух наліво. Позитивна вертикальна швидкість - вниз і негативна вертикальна швидкість - вгору. Отже, Ви повинні встановлювати ці змінні тільки тоді (наприклад, в подію створення), коли потрібно забезпечити примірника об'єкта постійний рух.

Існує інший шлях для визначення руху, використовуючи напрямок (в градусах 0-359) і швидкість (не повинна бути негативною). Ви можете встановлювати і зчитувати ці змінні, щоб визначити довільне рух. (Безпосередньо це змінює величини hspeed і vspeed.) Також є: сила тертя, сила тяжіння і напрямок дії сили тяжіння. Нарешті, є функція motion_add (dir, speed). щоб додавати рух до поточного екземпляру об'єкта.

Для повного комплекту, кожен екземпляр об'єкта має наступні змінні і функції, що мають відношення до своїх позицією і рухом:

x Відбиває координату примірника об'єкта по осі X.
y Відбиває координату примірника об'єкта по осі Y.
xprevious Відбиває координату примірника об'єкта по осі X в попередньому кроці.
yprevious Відбиває координату примірника об'єкта по осі Y в попередньому кроці.
xstart Відбиває координату по осі X в поточній кімнаті при старті.
ystart Відбиває координату по осі Y в поточній кімнаті при старті.
hspeed Відбиває величину швидкості переміщення примірника об'єкта по горизонталі.
vspeed Відбиває величину швидкості переміщення примірника об'єкта по вертикалі.
direction Відбиває поточний напрямок примірника об'єкта (від 0 до 360 градусів, відлік ведеться проти годинникової стрілки, 0 - направо).
speed Відбиває поточну швидкість примірника об'єкта (пікселів за крок).
friction Відбиває поточний тертя примірника об'єкта (пікселів за крок).
gravity Відбиває силу гравітації для поточного екземпляра об'єкта (пікселів за крок).
gravity_direction Відбиває напрямок гравітації для поточного екземпляра об'єкта (270 - вниз).
motion_set (dir, speed) Змушує поточний екземпляр об'єкта рухатися в напрямку dir зі швидкістю speed.
motion_add (dir, speed) "Векторно" додає рух зі швидкістю speed і напрямком dir до поточного руху примірника об'єкта.

Доступно також багато функцій, які допоможуть Вам в управлінні заданих Вами рухів:

place_free (x, y) Повертає істину, якщо з екземпляром об'єкта, поміщеним в точку з координатами (x, y), не відбувається зіткнень з твердими об'єктами. Зазвичай ця функція використовується для перевірки перед безпосереднім переміщенням примірника об'єкта в позицію з координатами (x, y).
place_empty (x, y) Повертає істину, якщо з екземпляром об'єкта, вміщеним в точку з координатами (x, y) не відбувається взагалі ніяких зіткнень.
place_meeting (x, y, obj) Повертає істину, якщо при приміщенні поточного екземпляра об'єкта в точку з координатами (x, y) відбувається зіткнення з екземпляром об'єкта obj. Це також може бути ідентифікатор екземпляра, спеціальне слово all, або спеціальне слово other.
place_snapped (hsnap, vsnap) Повертає істину, якщо поточний екземпляр об'єкта вирівняний по сітці з осередками розмірами vsnap на hsnap пікселів.
move_random (hsnap, vsnap) переміщує поточний екземпляр об'єкта в довільну вільну комірку сітки поточної кімнати.
move_snap (hsnap, vsnap) переміщує поточний екземпляр об'єкта в найближчу осередок сітки поточної кімнати.
move_wrap (hor, vert, margin) Переносить екземпляр об'єкта на інший бік кімнати, коли він покидає її за кордоном. hor - вказує перенесення по горизонталі і vert - вказує перенесення по вертикалі. margin - вказує, наскільки центр примірника повинен бути за межами кімнати, коли трапляється загортання. Зазвичай використовується в подію Outside (Поза кімнати).
move_towards_point (x, y, sp) Змушує поточний екземпляр об'єкта рухатися у напрямку до точки з координатами (x, y) зі швидкістю sp.
move_bounce_solid (adv) Поточний екземпляр об'єкта буде рикошетити тільки від примірників твердих об'єктів. Якщо adv - істина, то рикошет буде просунутий (від стін будь-якого нахилу)
move_bounce_all (adv) Поточний екземпляр об'єкта буде рикошетити від примірників усіх об'єктів.
move_contact_solid (dir, maxdist) Змушує екземпляр об'єкта рухатися в напрямку dir до тих пір, поки поточний екземпляр об'єкта не зіткнеться з екземпляром твердого об'єкта. Аргумент maxdist містить максимальну дистанцію (в пікселях), яку слід пройти примірника об'єкта. Тобто, якщо екземпляр об'єкта проходить максимальну дистанцію не зустрічаючи примірників твердих об'єктів, то він все одно зупиниться. Якщо Ви хочете, щоб екземпляр об'єкта все ж рухався до зіткнення, незалежно від розміру пройденого шляху, надайте maxdist значення -1 (для довільного відстані використовуйте негативні значення).
move_contact_all (dir, maxdist) Те ж саме, що і попередня функція з тією відмінністю, що екземпляр об'єкта буде рухатися, поки не зіткнеться з екземпляром будь-якого об'єкта.
move_outside_solid (dir, maxdist) Змушує екземпляр об'єкта рухатися в зазначеному напрямку dir до тих пір, поки поточний екземпляр об'єкта стикається з екземпляром твердого об'єкта. Якщо при дотику не відбувається, то екземпляр залишається на місці. Аргумент maxdist містить відстань (в пікселях), яке екземпляр об'єкта повинен пройти (для довільного відстані використовуйте негативні значення).
move_outside_all (dir, maxdist) Те ж саме, що і попередня процедура з тією відмінністю, що екземпляр об'єкта буде рухатися, поки відбувається зіткнення з екземпляром будь-якого об'єкта.
distance_to_point (x, y) Повертає відстань від точки з координатами поточного екземпляра об'єкта до точки з координатами (x, y).
distance_to_object (obj) Повертає відстань до найближчого примірника об'єкта obj.
position_empty (x, y) Повертає істину, якщо в точці з координатами (x, y) нічого не знаходиться.
position_meeting (x, y, obj) Повертає істину, якщо в точці з координатами (x, y) знаходиться екземпляр об'єкта obj. obj може бути об'єктом, ідентифікатором екземпляра об'єкта або одним з ключових слів: self. other. або all.