Advertisement
Guest User

Step Event

a guest
Oct 29th, 2018
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //sets the movement keys
  2.  
  3. if (hascontrol)
  4. {
  5.     key_left = keyboard_check(vk_left) or keyboard_check(ord("A"));
  6.     key_right = keyboard_check(vk_right) or keyboard_check(ord("D"));
  7.     key_jump = keyboard_check_pressed(vk_space) or keyboard_check_pressed(ord("W"));
  8. }
  9. else
  10. {
  11.     key_right = 0;
  12.     key_left = 0;
  13.     key_jump = 0;
  14. }
  15.  
  16. //calculate H movement
  17. walljumpdelay = max(walljumpdelay-1,0);
  18. if (walljumpdelay == 0)
  19. {
  20.     var move = key_right - key_left;
  21.  
  22.     hsp += move * hsp_acc;
  23.     if (move == 0)
  24.     {
  25.         var hsp_fric_final = hsp_fric_ground;
  26.         //if (!onground) hsp_fric_final = hsp_fric_air;
  27.         hsp = Approach(hsp,0,hsp_fric_final);
  28.     }
  29.     hsp = clamp(hsp,-walksp,walksp);
  30. }
  31.     //hsp = (move * walksp);
  32.  
  33.  
  34. //wall jump
  35. if(onwall != 0) && (!onground) && (key_jump) && ((key_left) or (key_right))
  36. {
  37.     walljumpdelay = walljumpdelay_max;
  38.     hsp = -onwall * hsp_wjump;
  39.     vsp = vsp_wjump;
  40.    
  41.     hsp_frac = 0;
  42.     vsp_frac = 0;
  43. }
  44.  
  45.  
  46. //Calculate V movement
  47. var grv_final = grv;
  48. var vsp_max_final = vsp_max;
  49. if (onwall != 0) && (vsp > 0)
  50. {
  51.     grv_final = grv_wall;
  52.     vsp_max_final = vsp_max_wall;
  53. }
  54. vsp += grv_final
  55. vsp = clamp(vsp,-vsp_max_final,vsp_max_final)
  56.  
  57. //vsp = (vsp + grv);
  58.  
  59.  
  60. //canjump -= 1;
  61. if (canjump > 0) && (key_jump) && (onground)
  62. {
  63.     vsp = vspjump;
  64.     vsp_frac = 0
  65.     canjump = 1;
  66. }
  67. else
  68. if (canjump > 0) && (key_jump) && (!onground)
  69. {
  70.     vsp = vspjump;
  71.     canjump -= 1;
  72.     vsp_frac = 0;
  73. }
  74.  
  75. //Get integers
  76. hsp += hsp_frac;
  77. vsp += vsp_frac;
  78. hsp_frac = frac(hsp);
  79. vsp_frac = frac(vsp);
  80. hsp -= hsp_frac;
  81. vsp -= vsp_frac;
  82.  
  83. //horizontal collision
  84. if (place_meeting(x+hsp,y,obj_wall))
  85. {
  86.     var onepixel = sign(hsp);
  87.     while (!place_meeting(x+onepixel,y,obj_wall))
  88.     {
  89.         x = x + onepixel;
  90.     }
  91.     hsp = 0;
  92.     hsp_frac = 0;
  93. }
  94. x = x + hsp;
  95.  
  96. //vertical collision
  97. if (place_meeting(x,y+vsp,obj_wall))
  98. {
  99.     var onepixel = sign(vsp);
  100.     while (!place_meeting(x,y+onepixel,obj_wall))
  101.     {
  102.         y = y + onepixel;
  103.     }
  104.     vsp = 0;
  105.     vsp_frac = 0;
  106. }
  107. y = y + vsp;
  108.  
  109. //calculate current status
  110. onground = place_meeting(x,y+1,obj_wall);
  111. onwall = place_meeting(x+1,y,obj_wall) - place_meeting(x-1,y,obj_wall);
  112. if (onground) canjump = 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement