Advertisement
Guest User

obj_shell_step_event

a guest
Aug 29th, 2019
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /// @description Update shell x, y, z
  2.  
  3. // shell is not immediately armed, arming = 0 is considered armed
  4. if (arming > 0) arming -=1;
  5.  
  6. // update time since shell was fired
  7. time_of_flight += 1 / room_speed;
  8.  
  9. // gravity
  10. var g = -9.8 * 10;
  11.  
  12. // update distance_travelled
  13. distance_travelled = velocity_h * time_of_flight;
  14.  
  15. show_debug_message("Distance travelled: " + string(distance_travelled) + " at a time of " + string(time_of_flight));
  16.  
  17. // update horizontal axises
  18. x = origin_x + lengthdir_x(distance_travelled, direction);
  19. y = origin_y + lengthdir_y(distance_travelled, direction);
  20.  
  21. // this formula is for parabolic trajectory, not used, doesn't account for degrees or radians properly
  22. //var displacement_z = ( tan(theta) * time_of_flight - (g / ( 2 * power(v, 2) * sqr(cos(theta)) ) ) * power(time_of_flight, 2) );
  23.  
  24. // convert velocity per tick to velocity per second
  25. var v = shell_velocity * room_speed;
  26.  
  27. // vertical displacement at point in time, this formula is for z displacement
  28. var displacement_z = ( (velocity_v * time_of_flight) + 0.5 * (g) * sqr(time_of_flight) );// *-1
  29.  
  30. // update z axis
  31. z = origin_z + displacement_z;
  32.  
  33. // check if shell is under water
  34. if (z < 0) is_under_water = true;
  35.  
  36. // update depth to be opposite of z, in gms negative depth is closer to camera, while positive z is above water line
  37. depth = -1 * z
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement