Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Input
- key_up = max(keyboard_check(vk_up), keyboard_check(ord("W")), 0);
- key_down = max(keyboard_check(vk_down), keyboard_check(ord("S")), 0);
- key_left = max(keyboard_check(vk_left), keyboard_check(ord("A")), 0);
- key_right = max(keyboard_check(vk_right), keyboard_check(ord("D")), 0);
- //Movement
- move_dir = point_direction(0,0,key_right-key_left,key_down-key_up);
- // Sprint Movement
- // Option 1 = X Sprint
- if (keyboard_check_released(ord("X"))) {
- walkSpeed = 2;
- }
- if (keyboard_check(ord("X"))) {
- walkSpeed = 2.5;
- }
- // Option 2 = Shift Sprint
- if (keyboard_check_released(vk_shift)) {
- walkSpeed = 2;
- }
- if (keyboard_check(vk_shift)) {
- walkSpeed = 2.5;
- }
- if(key_left||key_right||key_up||key_down){
- //This allows diagonal movement at the same speed as horizontal movement
- hsp=lengthdir_x(walkSpeed,move_dir);
- vsp=lengthdir_y(walkSpeed,move_dir);
- }else{
- hsp = 0;
- vsp = 0;
- }
- //Collisions
- if(place_meeting(x+hsp,y,oWall)){
- while(!place_meeting(x+sign(hsp),y,oWall)){
- x+=sign(hsp);
- }
- hsp = 0;
- }
- x+=hsp;
- if(place_meeting(x,y+vsp,oWall)){
- while(!place_meeting(x,y+sign(vsp),oWall)){
- y+=sign(vsp);
- }
- vsp = 0;
- }
- y+=vsp;
- //Change sprite based on movement
- if(y>yprevious){
- sprite_index = spr_plr_walk_down;
- }else if(y<yprevious){
- sprite_index = spr_plr_walk_up;
- }
- if(x>xprevious){
- sprite_index = spr_plr_walk_right;
- }else if(x<xprevious){
- sprite_index = spr_plr_walk_left;
- }
- //Haven't moved
- if(x==xprevious && y==yprevious){
- image_speed = 0;
- }else{
- image_speed = walkSpeed/6;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement