Advertisement
Guest User

Gamemaker Platformer Movement 1.1 by qwrkyqwrk

a guest
Jan 14th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ///Platformer Movement 1.1 (Squashed a bug. Sorry about that)
  2. //Movement Keys
  3. key_left= keyboard_check(vk_left);
  4. key_right= keyboard_check(vk_right);
  5. key_down= keyboard_check(vk_down);
  6. key_jump= keyboard_check(ord('S'));
  7. key_wall_jump= keyboard_check_pressed(ord('S'));
  8. key_action=keyboard_check(ord('A'))
  9. //Moving
  10. if key_left {x_spd = max(x_spd - to_max_xspd,-fasts);}  if key_right {x_spd = min(to_max_xspd + x_spd,fasts);}
  11. if x_spd<0&&!key_left{x_spd= min(x_spd + 0.1,0);}  if x_spd>0&&!key_right{x_spd= max(x_spd - 0.1,0);}
  12. //Horizontal Collision
  13. if place_meeting(x+x_spd,y-1,obj_wall){x_spd=0;}
  14. x+= x_spd;
  15. //Vertical Collision
  16. if !key_jump && ground==true {y_spd=0;}
  17. if (place_meeting(x,y+y_spd,oParSolid)){
  18.     while(!place_meeting(x,round(y+sign(y_spd)),oParSolid)){y += sign(y_spd);}y_spd = 0;ground=true;}
  19. if place_meeting(x,y+y_spd,obj_slope) {ground=true;y-=run_spd+.2;}
  20. if place_meeting(x,y+y_spd,obj_wall) && running {ground=true;y--;}
  21. else if !place_meeting(x,y+1,oParSolid)&&ground{ground=false;/*inAir=true;*/}
  22. y+= y_spd;
  23. //Jumping (Add Jump Holding for varying heights)
  24. if !ground && y_spd<10 {y_spd+=grav;}
  25. if ground && key_jump {y_spd=-jump_spd;}
  26. //Image Direction
  27. if key_left && image_xscale==1 {image_xscale=-1}
  28. if key_right && image_xscale==-1 {image_xscale=1}
  29. //Wall Jumping
  30. if can_wall_jump && key_right && place_meeting(x+1,y,obj_wall) && key_wall_jump && !ground {y_spd=-jump_spd;x_spd=-2.8;}
  31. if can_wall_jump && key_left && place_meeting(x-1,y,obj_wall) && key_wall_jump && !ground {y_spd=-jump_spd;x_spd=2.8;}
  32. //Running
  33. if !running {fasts=walk_spd} else if running {fasts=run_spd}
  34. if key_action&&key_left || key_action&&key_right {running=true;} else if !key_left&&running==true ||!key_right && running==true {running=false;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement