Advertisement
Ulabael

Cam

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