Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //sets the movement keys
- if (hascontrol)
- {
- key_left = keyboard_check(vk_left) or keyboard_check(ord("A"));
- key_right = keyboard_check(vk_right) or keyboard_check(ord("D"));
- key_jump = keyboard_check_pressed(vk_space) or keyboard_check_pressed(ord("W"));
- }
- else
- {
- key_right = 0;
- key_left = 0;
- key_jump = 0;
- }
- //calculate H movement
- walljumpdelay = max(walljumpdelay-1,0);
- if (walljumpdelay == 0)
- {
- var move = key_right - key_left;
- hsp += move * hsp_acc;
- if (move == 0)
- {
- var hsp_fric_final = hsp_fric_ground;
- //if (!onground) hsp_fric_final = hsp_fric_air;
- hsp = Approach(hsp,0,hsp_fric_final);
- }
- hsp = clamp(hsp,-walksp,walksp);
- }
- //hsp = (move * walksp);
- //wall jump
- if(onwall != 0) && (!onground) && (key_jump) && ((key_left) or (key_right))
- {
- walljumpdelay = walljumpdelay_max;
- hsp = -onwall * hsp_wjump;
- vsp = vsp_wjump;
- hsp_frac = 0;
- vsp_frac = 0;
- }
- //Calculate V movement
- var grv_final = grv;
- var vsp_max_final = vsp_max;
- if (onwall != 0) && (vsp > 0)
- {
- grv_final = grv_wall;
- vsp_max_final = vsp_max_wall;
- }
- vsp += grv_final
- vsp = clamp(vsp,-vsp_max_final,vsp_max_final)
- //vsp = (vsp + grv);
- //canjump -= 1;
- if (canjump > 0) && (key_jump) && (onground)
- {
- vsp = vspjump;
- vsp_frac = 0
- canjump = 1;
- }
- else
- if (canjump > 0) && (key_jump) && (!onground)
- {
- vsp = vspjump;
- canjump -= 1;
- vsp_frac = 0;
- }
- //Get integers
- hsp += hsp_frac;
- vsp += vsp_frac;
- hsp_frac = frac(hsp);
- vsp_frac = frac(vsp);
- hsp -= hsp_frac;
- vsp -= vsp_frac;
- //horizontal collision
- if (place_meeting(x+hsp,y,obj_wall))
- {
- var onepixel = sign(hsp);
- while (!place_meeting(x+onepixel,y,obj_wall))
- {
- x = x + onepixel;
- }
- hsp = 0;
- hsp_frac = 0;
- }
- x = x + hsp;
- //vertical collision
- if (place_meeting(x,y+vsp,obj_wall))
- {
- var onepixel = sign(vsp);
- while (!place_meeting(x,y+onepixel,obj_wall))
- {
- y = y + onepixel;
- }
- vsp = 0;
- vsp_frac = 0;
- }
- y = y + vsp;
- //calculate current status
- onground = place_meeting(x,y+1,obj_wall);
- onwall = place_meeting(x+1,y,obj_wall) - place_meeting(x-1,y,obj_wall);
- if (onground) canjump = 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement