Tricky_Fat_Cat

GM2_Camera_UserEvents

Oct 16th, 2019
586
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ///----------------------------------------------///
  2. ///                 User Event 0                 ///
  3. ///----------------------------------------------///
  4.  
  5. /// @description FollowObject
  6.  
  7. var _targetExists = instance_exists(cameraFollowTarget);
  8.        
  9. if (_targetExists)
  10. {
  11.     targetX = cameraFollowTarget.x;
  12.     targetY = cameraFollowTarget.y;
  13.  
  14.     CalculateCameraDelayMovement();
  15. }
  16.  
  17. ///----------------------------------------------///
  18. ///                 User Event 1                 ///
  19. ///----------------------------------------------///
  20.  
  21. /// @description FollowBorder
  22.        
  23. switch (global.CurrentInput)
  24. {
  25.     case InputMethod.KeyboardMouse:
  26.         var _borderStartMargin = 0.35;
  27.         var _borderEndMargin = 1 - _borderStartMargin;
  28.        
  29.         var _borderStartX = cameraX + (cameraWidth * _borderStartMargin);
  30.         var _borderStartY = cameraY + (cameraHeight * _borderStartMargin);
  31.        
  32.         var _borderEndX = cameraX + (cameraWidth * _borderEndMargin);
  33.         var _borderEndY = cameraY + (cameraHeight * _borderEndMargin);
  34.        
  35.         var _isInsideBorder = point_in_rectangle(mouse_x, mouse_y, _borderStartX, _borderStartY, _borderEndX, _borderEndY);
  36.        
  37.         if (!_isInsideBorder)
  38.         {
  39.             var _lerpAlpha = 0.01;
  40.            
  41.             cameraX = lerp(cameraX, mouse_x - cameraOriginX, _lerpAlpha);
  42.             cameraY = lerp(cameraY, mouse_y - cameraOriginY, _lerpAlpha);
  43.         }
  44.         else
  45.         {
  46.             ExecuteMoveWithKeyboard;
  47.         }
  48.     break;
  49.    
  50.     case InputMethod.Gamepad:
  51.         ExecuteMoveWithGamepad;
  52.     break;
  53. }
  54.  
  55. ///----------------------------------------------///
  56. ///                 User Event 2                 ///
  57. ///----------------------------------------------///
  58.  
  59. /// @description FollowPointPeek
  60.  
  61. var _distanceMax =  190;
  62. var _startPointX = cameraFollowTarget.x;
  63. var _startPointY = cameraFollowTarget.y - cameraFollowTarget.offsetY - cameraFollowTarget.z;
  64.        
  65. switch (global.CurrentInput)
  66. {
  67.     case InputMethod.KeyboardMouse:
  68.         var _direction = point_direction(_startPointX, _startPointY, mouse_x, mouse_y);
  69.         var _aimDistance = point_distance(_startPointX, _startPointY, mouse_x, mouse_y);
  70.         var _distanceAlpha = min(_aimDistance / _distanceMax, 1);
  71.     break;
  72.        
  73.     case InputMethod.Gamepad:
  74.         var _axisH = gamepad_axis_value(global.ActiveGamepad, gp_axisrh);
  75.         var _axisV = gamepad_axis_value(global.ActiveGamepad, gp_axisrv);
  76.         var _direction = point_direction(0, 0, _axisH, _axisV);
  77.         var _distanceAlpha = min(point_distance(0, 0, _axisH, _axisV), 1);
  78.     break;
  79. }
  80.        
  81. var _distance = lerp(0, _distanceMax, _distanceAlpha);
  82. var _endPointX = _startPointX + lengthdir_x(_distance, _direction)
  83. var _endPointY = _startPointY + lengthdir_y(_distance, _direction)
  84.            
  85. targetX = lerp(_startPointX, _endPointX, 0.2);
  86. targetY = lerp(_startPointY, _endPointY, 0.2);
  87.            
  88. CalculateCameraDelayMovement();
  89.  
  90. ///----------------------------------------------///
  91. ///                 User Event 3                 ///
  92. ///----------------------------------------------///
  93.  
  94. /// @description FollowDrag
  95.  
  96. switch (global.CurrentInput)
  97. {
  98.     case InputMethod.KeyboardMouse:
  99.         var _mouseClick = mouse_check_button(mb_right);
  100.        
  101.         var _mouseX = display_mouse_get_x();
  102.         var _mouseY = display_mouse_get_y();
  103.        
  104.         if (_mouseClick)
  105.         {
  106.             cameraX += (mousePreviousX - _mouseX) * cameraDragSpeed;
  107.             cameraY += (mousePreviousY - _mouseY) * cameraDragSpeed;
  108.         }
  109.         else
  110.         {
  111.             ExecuteMoveWithKeyboard;
  112.         }
  113.        
  114.         mousePreviousX = _mouseX;
  115.         mousePreviousY = _mouseY;
  116.     break;
  117.    
  118.     case InputMethod.Gamepad:
  119.         ExecuteMoveWithGamepad;
  120.     break;
  121. }
  122.  
  123. ///----------------------------------------------///
  124. ///                 User Event 4                 ///
  125. ///----------------------------------------------///
  126.  
  127. /// @description MoveToTarget
  128.        
  129. MoveCameraToPoint(cameraSpeed);
  130.  
  131. ///----------------------------------------------///
  132. ///                 User Event 5                 ///
  133. ///----------------------------------------------///
  134.  
  135. /// @description MoveToFollowObject
  136.        
  137. var _targetExists = instance_exists(cameraFollowTarget);
  138.        
  139. if (_targetExists)
  140. {
  141.     targetX = cameraFollowTarget.x;
  142.     targetY = cameraFollowTarget.y;
  143.        
  144.     MoveCameraToPoint(cameraSpeed);
  145.        
  146.     var _distance = point_distance(cameraX, cameraY, targetX - cameraOriginX, targetY - cameraOriginY);
  147.        
  148.     if (_distance < 1)
  149.     {
  150.         cameraMode = CameraMode.FollowObject;
  151.     }
  152. }
  153.  
  154. ///----------------------------------------------///
  155. ///                 User Event 6                 ///
  156. ///----------------------------------------------///
  157.  
  158. /// @description MoveWithGamepad
  159.  
  160. var _axisH = gamepad_axis_value(global.ActiveGamepad, gp_axisrh);
  161. var _axisV = gamepad_axis_value(global.ActiveGamepad, gp_axisrv);
  162.        
  163. var _direction = point_direction(0, 0, _axisH, _axisV);
  164. var _lerpAlpha = min(point_distance(0, 0, _axisH, _axisV), 1);
  165. var _speed = lerp(0, cameraButtonMoveSpeed, _lerpAlpha);
  166.        
  167. cameraX += lengthdir_x(_speed, _direction);
  168. cameraY += lengthdir_y(_speed, _direction);
  169.  
  170. ///----------------------------------------------///
  171. ///                 User Event 7                 ///
  172. ///----------------------------------------------///
  173.  
  174. /// @description MoveWithKeyboard
  175.  
  176. var _directionX = obj_gameManager.keyMoveRight - obj_gameManager.keyMoveLeft;
  177. var _directionY = obj_gameManager.keyMoveDown - obj_gameManager.keyMoveUp;
  178.  
  179. if (_directionX != 0 || _directionY != 0)
  180. {
  181.     var _direction = point_direction(0, 0, _directionX, _directionY);
  182.    
  183.     var _speedX = lengthdir_x(cameraButtonMoveSpeed, _direction);
  184.     var _speedY = lengthdir_y(cameraButtonMoveSpeed, _direction);
  185.  
  186.     cameraX += _speedX;
  187.     cameraY += _speedY;
  188. }
  189.  
  190. ///----------------------------------------------///
  191. ///                 User Event 8                 ///
  192. ///----------------------------------------------///
  193.  
  194. /// @description ClampCameraPosition
  195.  
  196. if (clampToBorders)
  197. {
  198.     cameraX = clamp(cameraX, 0, room_width - cameraWidth);
  199.     cameraY = clamp(cameraY, 0, room_height - cameraHeight);
  200. }
  201.  
  202. ///----------------------------------------------///
  203. ///                 User Event 9                 ///
  204. ///----------------------------------------------///
  205.  
  206. /// @description CameraShaker
  207.  
  208. // Private parameters
  209. var _cameraShakePower = 5;
  210. var _cameraShakeDrop = 0.1;
  211. var _cameraAngularShakePower = 0.5;
  212.  
  213. // Shake range calculations
  214. var _shakeRange = power(cameraShakeValue, 2) * _cameraShakePower;
  215.  
  216. // Add _shakeRange to camera position
  217. cameraX += random_range(-_shakeRange, _shakeRange);
  218. cameraY += random_range(-_shakeRange, _shakeRange);
  219.  
  220. // Chanege view angle to shake camera angle
  221. if angularShakeEnabled
  222. {
  223.     camera_set_view_angle(mainCamera, random_range(-_shakeRange, _shakeRange) * _cameraAngularShakePower);
  224. }
  225.  
  226. // Decrease shake value
  227. if cameraShakeValue > 0
  228. {
  229.     cameraShakeValue = max(cameraShakeValue - _cameraShakeDrop, 0);
  230. }
Advertisement
Add Comment
Please, Sign In to add comment