Tengo el problema de que al empezar el juego mi personaje se mueve automaticamente a la derecha y aunque presione la izquierda no frena, encontre una forma de solucionarlo pero al hacerlo mi personaje se queda enganchado en las paredes y ya no se puede mover.Esto lo hice con la ayuda de unos videos tutoriales(que todavia me falta por terminar la lista de reproduccion) pero no encuentro solucion por ningun lado, soy nuevo en todo esto xd no se casi nada de programacion.
Adjunto el codigo
///Desplazamiento
var keyLeft, keyRight, keyJump, keyJumpRelease;
keyLeft = -keyboard_check(vk_left);
keyRight = keyboard_check(vk_right);
keyJump = keyboard_check_pressed(vk_up);
keyJumpRelease = keyboard_check_released(vk_up);
//Comprobacion de colisiones
intColLeft = place_meeting(x - 1, y, obj_block);
intColRight = place_meeting(x + 1, y, obj_block);
bolGround = place_meeting (x, y + 1, obj_block);
intMove = keyLeft + keyRight;
//Definir aceleración y fricción en funcion del medio
if (!bolGround)
{
intTempAcc = intAirAcc;
intTempFric = intAirFric;
}
else
{
intTempAcc = intGroundAcc;
intTempFric = intGroundFric;
}
//Velocidad horizontal
if (intMove != 0) intVX = scrApproach(intVX, intVXMax + intMove, intTempAcc);
else intVX = scrApproach(intVX, intVXMax + intMove, intTempFric);
//Velocidad vertical
if (!bolGround)
{
intVY = scrApproach (intVY, intVYMax, intGravityNorm); //Caida libre
}
//Salto
if (keyJump && bolGround) intVY = -intVYMax;
//Colision horizontal
repeat(abs(intVX))
{
if (!place_meeting(x + sign(intVX), y, obj_block))
{
x += sign(intVX)
}
else
{
intVX = 0;
break;
}
}
//Colisión vertical
repeat(abs(intVY))
{
if (place_meeting(x, y + sign(intVY), obj_block))
{
intVY = 0;
break;
}
else y += sign(intVY);
}
Adjunto el codigo
///Desplazamiento
var keyLeft, keyRight, keyJump, keyJumpRelease;
keyLeft = -keyboard_check(vk_left);
keyRight = keyboard_check(vk_right);
keyJump = keyboard_check_pressed(vk_up);
keyJumpRelease = keyboard_check_released(vk_up);
//Comprobacion de colisiones
intColLeft = place_meeting(x - 1, y, obj_block);
intColRight = place_meeting(x + 1, y, obj_block);
bolGround = place_meeting (x, y + 1, obj_block);
intMove = keyLeft + keyRight;
//Definir aceleración y fricción en funcion del medio
if (!bolGround)
{
intTempAcc = intAirAcc;
intTempFric = intAirFric;
}
else
{
intTempAcc = intGroundAcc;
intTempFric = intGroundFric;
}
//Velocidad horizontal
if (intMove != 0) intVX = scrApproach(intVX, intVXMax + intMove, intTempAcc);
else intVX = scrApproach(intVX, intVXMax + intMove, intTempFric);
//Velocidad vertical
if (!bolGround)
{
intVY = scrApproach (intVY, intVYMax, intGravityNorm); //Caida libre
}
//Salto
if (keyJump && bolGround) intVY = -intVYMax;
//Colision horizontal
repeat(abs(intVX))
{
if (!place_meeting(x + sign(intVX), y, obj_block))
{
x += sign(intVX)
}
else
{
intVX = 0;
break;
}
}
//Colisión vertical
repeat(abs(intVY))
{
if (place_meeting(x, y + sign(intVY), obj_block))
{
intVY = 0;
break;
}
else y += sign(intVY);
}