Я новичок в GameMaker и пытаюсь создать свой первый платформер, следуя инструкциям Шона Сполдинга, особенно этот относительно отслеживания камеры игрока. Я использую GameMaker Studio 2 на Mac.
Я пытаюсь использовать аналогичный подход, чтобы разрешить плавное масштабирование во время dramatic-ish событий сценариев, в основном медленно увеличивая или уменьшая параметры camera_set_view_size()
для достижения плавного увеличения.
В настоящее время у меня есть текущий код объекта oCamera
, который работает для части масштабирования.
Создать событие
/// @description Setup camera
zoom_level = 1;
cam = view_camera[0];
follow = oPlayer;
view_w_half = camera_get_view_width(cam) * 0.5;
view_h_half = camera_get_view_height(cam) * 0.5;
xTo = xstart;
yTo = ystart;
default_zoom_width = camera_get_view_width(cam);
default_zoom_height = camera_get_view_height(cam);
currW = default_zoom_width;
currH = default_zoom_height;
Шаг события
/// @description Update camera
// Update zoom size
if keyboard_check_pressed(ord("I")) {
zoom_level = 0.5;
} else if keyboard_check_pressed(ord("O")) {
zoom_level = 1;
} else if keyboard_check_pressed(ord("P")) {
zoom_level = 2;
}
// Update destination
if (instance_exists(follow)) {
xTo = follow.x;
yTo = follow.y;
}
// Update object position
x += (xTo - x) / 25;
y += (yTo - y) / 25;
// Update view size
zoomXTo = default_zoom_width * zoom_level;
zoomyTo = default_zoom_height * zoom_level;
currW += (zoomXTo - camera_get_view_width(cam)) / 25;
currH += (zoomyTo - camera_get_view_height(cam)) / 25;
camera_set_view_size(cam, currW, currH);
// Clamp camera
x = clamp(x, view_w_half, room_width - view_w_half);
y = clamp(y, view_h_half, room_height - view_h_half);
// Update camera position
camera_set_view_pos(cam, x - view_w_half, y - view_h_half);
Бит масштабирования, вероятно, мог бы быть немного более кратким, но выполняет свою работу. Мне все еще интересно, как:
- держать игрока в центре. Я предполагаю, что есть какое-то отношение к деталям
xTo = follow.x
и yTo = follow.y
и переменной масштаба, но не могу точно определить, как изменение масштаба, переведенное в изменение положения х / у ...
- обновить зажимную часть камеры, чтобы она отражала изменение масштаба.
Немного возился с этим и, похоже, не в состоянии понять, как это сделать, поэтому любая помощь будет признательна.
Большое спасибо!