Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: AYUDA: Mi personaje se queda pegado al suelo.  (Leído 93 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Luis En

en: Agosto 10, 2018, 09:08:22 am
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
// 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
    }
EVENTO COLLISION
move_contact_solid(direction, 12)
vspeed= 12;



No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado 3dgeminis

Respuesta #1 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
move_contact_solid(direction, 12)
vspeed= 0;
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.

 
Los siguientes usuarios dieron las gracias a este tema: Luis En


Desconectado Luis En

Respuesta #2 en: Agosto 10, 2018, 09:13:22 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
move_contact_solid(direction, 12)
vspeed= 0;
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