Buenas compañeros, he tenido problemas con mi personaje al ponerle gravedad. Pasa que al chocar con el objeto de colisión (suelo), presiono avanzar pero solo se reproduce la animación de caminar, y se queda en el mismo lugar sin desplazarse.
¿Me podrían ayudar a saber porque pasa eso? Recién estoy aprendiendo el GML.
Aquí les dejo el código que estoy utilizando:
EVENTO STEP
[gml]
// GRAVEDAD
if place_free(x,y + 1)
{
gravity_direction= 270
gravity= 0.5
}
else
{
gravity_direction= 270
gravity= 0
}
if (vspeed> 12)
{vspeed= 12}
//CAMINAR
if keyboard_check_pressed(vk_left)
{
hspeed= -5;
image_xscale= -1
image_speed= 0.5
}
if keyboard_check_pressed(vk_right)
{
hspeed= 5;
image_xscale= 1
image_speed= 0.5
}
if keyboard_check_released(vk_left)
{
hspeed= 0;
image_xscale= -1
image_speed= 0
image_index= 0
}
if keyboard_check_released(vk_right)
{
hspeed= 0;
image_xscale= 1
image_speed= 0
image_index= 0
}
[/gml]
EVENTO COLLISION
[gml]
move_contact_solid(direction, 12)
vspeed= 12;
[/gml]
Eso es debido a que en la colision no detenes la velocidad vertical si no que la igualas a 12 cuando deberia ser 0
[gml]
move_contact_solid(direction, 12)
vspeed= 0;
[/gml]
Algo que note, es que usas keyboard_check_pressed siendo una funcion que se ejecuta una vez para mover al personaje, lo mejor seria usar keyboard_check.
Cita de: 3dgeminis en Agosto 10, 2018, 07:48:09 PM
Eso es debido a que en la colision no detenes la velocidad vertical si no que la igualas a 12 cuando deberia ser 0
[gml]
move_contact_solid(direction, 12)
vspeed= 0;
[/gml]
Algo que note, es que usas keyboard_check_pressed siendo una funcion que se ejecuta una vez para mover al personaje, lo mejor seria usar keyboard_check.
Genial! muchas gracias!! ese era el error!
Y sobre el keyboard_check_pressed lo utilizo porque pensé que solo se activaba cada vez que presione avanzar, en cambio keyboard_check al presionar una vez se seguirá desplazando así ya no lo mantenga presionado, no era así? o me estoy enredando? xD