10 советов и трюков GameMaker Studio 2. Часть 1.
Добро пожаловать в список из 10 трюков и советов по GameMaker Studio 2. Независимо от того, знакомы ли вы уже с этим движком или только начали его изучать, можно узнать что-то новое.
#1 Ссылка на конкретный экземпляр объекта
Функции создания экземпляров, такие как instance_create_layer и instance_create_depth - одни из самых основных функций, которые разработчики используют в Game Maker. Но не все знают, что они возвращают идентификатор созданного экземпляра, который можно сохранить в переменную для дальнейшего его использования.
var inst;
inst = instance_create_depth(x, y, -10000, obj_Bullet);
with (inst) {
speed = other.shoot_speed;
direction = other.image_angle;
}
#2 Макросы и перечисления
Macros и Enums не нуждаются в вызове для инициализации - достаточно скрипта, в котором хранятся ваши макросы и энумераторы, и они будут загружены в ваш проект.
#3 Средняя кнопка мыши
Для экономии времени вы можете щёлкать средней кнопкой мыши на ресурс или функцию в редакторе кода. GMS2 откроет соответствующий объект или, если это функция, то страницу со справкой.
#4 Тернарные операторы в GameMaker Studio 2
GMS2 поддерживает тернарные операторы, которые предоставляют элегантный подход к условным выражениям: <условие>? <условие истинно>: <условие ложно>
// обычный подход
if (standingOnIce) {
friction = ice_friction;
}
else {
friction = default_friction;
}
// тернарная операция
friction = (standingOnIce ? ice_friction : default_friction);
#5 Сохранить результат выражения в переменной
Вместо использования оператора if вы можете заносить результат выражения сразу в переменную.
// обычный подход
if (abs(speed) > 0) {
moving = true;
}
else {
moving = false;
}
// занесение результата в переменную
moving = (abs(speed) > 0);
#6 Дельта-синхронизация в GameMaker
Дельта-синхронизация - это количество микросекунд, прошедших с последнего кадра. К примеру, вы можете связать перемещение с delta_time для обеспечения постоянной скорости движения на всех устройствах, независимо от частоты кадров.
var seconds_since_last_frame = (delta_time / 1000000); var distance_to_move_this_frame = (distance_per_second * seconds_since_last_frame); x += distance_to_move_this_frame;
#7 Поворот объекта "лицом" к курсору мыши
Простой пример, как постепенно поворачивать объект к курсору
var targetDirection = point_direction(x, y, mouse_x, mouse_y); var angleDifference = angle_difference(image_angle, targetDirection); var angleIncrement = 10; image_angle -= (min(abs(angleDifference), angleIncrement) * sign(angleDifference));
#8 Использование Clamp
Вместо использования операторов if для ограничения значения переменной, вы можете использовать Clamp, что гораздо удобней и умещается в одну строку.
// обычный подход
if (spd > maxspd) {
spd = maxspd;
}
else if (spd < 0) {
spd = 0;
}
// метод с Clamp
spd = clamp(spd, 0, maxspd);
#9 Мигание текста или спрайта
Простой способ для мигания спрайта или текста с заданным интервалом:
///@desc blink(c_white, c_black, 0.5); ///@arg on_val ///@arg off_val ///@arg [rate] var on_val = argument[0]; var off_val = argument[1]; var rate = (argument_count > 2 ? (argument[2] * 1000) : 1000); if (current_time % (rate * 2) >= rate) return on_val; return off_val;
#10 Шаблоны кода
В меню Preferences -> Objects вы можете создать шаблон, который будет использоваться по умолчанию для всех новых сценариев и событий. Это может сэкономить вам очень много времени.


<a href= http://mosros.flybb.ru/viewtopic.php?f=2&t=635>Процесс получения диплома стоматолога: реально ли это сделать быстро?</a>