Advertisement
Ulabael

Cam

May 18th, 2023
1,059
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE
  2. /// @description
  3. // Здесь просто устанавливаем параметры камеры.
  4. cam_w = 480;
  5. cam_h = 270;
  6.  
  7. // Сохраняем айдишник камеры.
  8. global.camera = camera_create_view(x, y, cam_w, cam_h);
  9.  
  10. // Врубаем её.
  11. view_set_camera(0, global.camera);
  12. view_enabled = true;
  13. view_visible[0] = true;
  14.  
  15. // Центровка камеры.
  16. if (x <= cam_w / 2 or x >= (room_width) - cam_w / 2) x = cam_w / 2
  17. if (y <= cam_h / 2 or y > room_height - cam_h / 2) y = cam_h / 2
  18.  
  19. /// STEP
  20.  
  21. // Получаем текущие координаты левого верхнего угла.
  22. var cameraX = camera_get_view_x(global.camera);
  23. var cameraY = camera_get_view_y(global.camera);
  24. // Делаем переменные стабильными для зума
  25. var cameraWidth = camera_get_view_width(global.camera);
  26. var cameraHeight = camera_get_view_height(global.camera);
  27.  
  28. // Если игрок существует - следим за игроком, иначе - за собой же.
  29. if instance_exists(obj_player) {
  30.     var target = obj_player;   
  31. }
  32. else target = id;
  33.  
  34. // Координаты, куда надо двигать камеру
  35. var targetX = target.x - cameraWidth / 2;
  36. var targetY = target.y - cameraHeight / 2;
  37.  
  38. // Поддерживаем входные значения в диапазоне от 0 до размеров комнаты
  39. targetX = clamp(targetX, 0, room_width - cameraWidth);
  40. targetY = clamp(targetY, 0, room_height - cameraHeight);
  41.    
  42. // Плавно перемещаем камеру от текущей позиции к целевой с шагом в 20%
  43. cameraX = lerp(cameraX, targetX, 0.2);
  44. cameraY = lerp(cameraY, targetY, 0.2);
  45.    
  46. camera_set_view_pos(global.camera, cameraX, cameraY);
  47. camera_set_view_size(global.camera, cameraWidth, cameraHeight);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement