Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE
- /// @description
- // Здесь просто устанавливаем параметры камеры.
- cam_w = 480;
- cam_h = 270;
- // Сохраняем айдишник камеры.
- global.camera = camera_create_view(x, y, cam_w, cam_h);
- // Врубаем её.
- view_set_camera(0, global.camera);
- view_enabled = true;
- view_visible[0] = true;
- // Центровка камеры.
- if (x <= cam_w / 2 or x >= (room_width) - cam_w / 2) x = cam_w / 2
- if (y <= cam_h / 2 or y > room_height - cam_h / 2) y = cam_h / 2
- /// STEP
- // Получаем текущие координаты левого верхнего угла.
- var cameraX = camera_get_view_x(global.camera);
- var cameraY = camera_get_view_y(global.camera);
- // Делаем переменные стабильными для зума
- var cameraWidth = camera_get_view_width(global.camera);
- var cameraHeight = camera_get_view_height(global.camera);
- // Если игрок существует - следим за игроком, иначе - за собой же.
- if instance_exists(obj_player) {
- var target = obj_player;
- }
- else target = id;
- // Координаты, куда надо двигать камеру
- var targetX = target.x - cameraWidth / 2;
- var targetY = target.y - cameraHeight / 2;
- // Поддерживаем входные значения в диапазоне от 0 до размеров комнаты
- targetX = clamp(targetX, 0, room_width - cameraWidth);
- targetY = clamp(targetY, 0, room_height - cameraHeight);
- // Плавно перемещаем камеру от текущей позиции к целевой с шагом в 20%
- cameraX = lerp(cameraX, targetX, 0.2);
- cameraY = lerp(cameraY, targetY, 0.2);
- camera_set_view_pos(global.camera, cameraX, cameraY);
- camera_set_view_size(global.camera, cameraWidth, cameraHeight);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement