Advertisement
rooksword

Platformer Movement Code

Nov 29th, 2020 (edited)
2,301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /// @desc Movement
  2.  
  3. // Input
  4.  
  5. keyboard_set_map(ord("W"), vk_up);
  6. keyboard_set_map(ord("A"), vk_left);
  7. keyboard_set_map(ord("D"), vk_right);
  8.  
  9. var _right = keyboard_check(vk_right);
  10. var _left = keyboard_check(vk_left);
  11.  
  12. key_jump += buffer * keyboard_check_pressed(vk_up);
  13. if key_jump > 0 key_jump--;
  14.  
  15. var _move = _right - _left;
  16. vel.x = lerp(vel.x, _move * spd, _move != 0 ? acc : dec);
  17.  
  18. if vel.y < 10 vel.y += grav;
  19.  
  20. if place_meeting(x, y + 1, obj_wall)
  21. {
  22.     if key_jump > 0
  23.     {
  24.         vel.y = sign(key_jump) * -jspd;
  25.         key_jump = 0;
  26.     }
  27. }
  28.  
  29. // Collisions
  30.  
  31. if place_meeting(x + vel.x, y, obj_wall)
  32. {
  33.     while !place_meeting(x+sign(vel.x),y, obj_wall)
  34.     {
  35.         x += sign(vel.x);
  36.     }
  37.     vel.x = 0;
  38. }
  39. x += vel.x;
  40.  
  41. if place_meeting(x, y + vel.y, obj_wall)
  42. {
  43.     while !place_meeting(x, y + sign(vel.y), obj_wall)
  44.     {
  45.         y += sign(vel.y);
  46.     }
  47.     vel.y = 0;
  48. }
  49. y += vel.y;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement