• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

Problems with pausing while moving

T

Tony Moonen

Guest
Hello everyone,
i need some help with coding a pause system while object_player is moving.

Pausing works when moving most directions but for some reason, it doesn't pause when object_player is moving up-left (holding key_left and key_up and then pressing escape).
I checked all the code but i can't find the problem.
It's probably a really easy fix but i can't figure it out.

Here's the code i have right now for object_player.

Create:
Code:
paused = false;
vertical_speed = 4;
horizontal_speed = 4;

//user events
pause_toggle = 0;
Step:
Code:
//pause code
if keyboard_check_pressed(vk_escape)
{
    event_user(pause_toggle);
}
//key defining
//X
var key_left = keyboard_check(vk_left);
var key_right = keyboard_check(vk_right);
//Y
var key_up = keyboard_check(vk_up);
var key_down = keyboard_check(vk_down);
//released key defining
var key_left_released = keyboard_check_released(vk_left);
var key_right_released = keyboard_check_released(vk_right);
var key_up_released = keyboard_check_released(vk_up);
var key_down_released = keyboard_check_released(vk_down);



//movement defining
var move_x = (-key_left + key_right);
var move_y = (-key_up + key_down);

//delta time code
dt = (delta_time / 1000000) * 60;




//pause check
if paused = true {
    //speed defining when paused
    hspd = 0;
    vspd = 0;
} else {
    //speed defining when not paused
    hspd = move_x * horizontal_speed * dt;
    vspd = move_y * vertical_speed * dt;
  
}



if paused = false {
    //sprite code walking
    //sprite code double-key prevention
    if key_left && key_right { sprite_index = sprite_player_neutralright; }
    if key_up && key_down { sprite_index = sprite_player_neutraldown; }

    //sprite code stop walking
    if key_left_released { sprite_index = sprite_player_neutralleft }
    if key_right_released { sprite_index = sprite_player_neutralright }
    if key_up_released { sprite_index = sprite_player_neutralup }
    if key_down_released { sprite_index = sprite_player_neutraldown }

    //walking X
    if move_x == -1 { sprite_index = sprite_player_walkingleft; }
    if move_x == 1 { sprite_index = sprite_player_walkingright; }

    //walking Y
    if move_y == -1 { sprite_index = sprite_player_walkingup; }
    if move_y == 1 { sprite_index = sprite_player_walkingdown; }
} else {
 
}


//COLLISION
//collision X
if (place_meeting(x + hspd, y, object_wall)) {
    while (!place_meeting(x + sign(hspd), y, object_wall))
        x += sign(hspd);
    hspd = 0;
}

//collision Y
if (place_meeting(x, y + vspd, object_wall)) {
    while (!place_meeting(x, y + sign(vspd), object_wall))
    y += sign(vspd);
    vspd = 0;
    }
  
//unstuck code
if (place_meeting(x,y,object_wall))
    {
        for(var i = 0; i < 1000; i++)
        {
            if (!place_meeting(x + i,y,object_wall))
            {
                x += i;
                break;
            }
            if (!place_meeting(x - i,y,object_wall))
            {
                x -= i;
                break;
            }
            if (!place_meeting(x,y - i,object_wall))
            {
                y -= i;
                break;
            }
            if (!place_meeting(x,y + i,object_wall))
            {
                y += i;
                break;
            }
            if (!place_meeting(x + i,y - i,object_wall))
            {
                x += i;
                y -= i;
                break;
            }
            if (!place_meeting(x - i,y - i,object_wall))
            {
                y -= i
                x -= i
                break;
            }
            if (!place_meeting(x + i,y + i,object_wall))
            {
                y += i
                x += i
                break;
            }
            if (!place_meeting(x - i,y + i,object_wall))
            {
                y += i
                x -= i
                break;
            }
        }
    }

x += hspd;
y += vspd;
User event 0 (pause event):
Code:
if not paused {
  
    paused = true;
  
} else {
  
    paused = false;
  
}
Hope this isn't too cluttered and someone can help me with this.

EDIT:
it's fixed.
apparently there's a weird thing with the keyboard of my laptop that doesn't allow me to press these certain keys at the same time.
had nothing to do with the code.
 
Last edited by a moderator:
Top