Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: TeiBrito en Agosto 01, 2015, 03:55:40 PM

Título: Problemas con colisiones por debajo de los bloques
Publicado por: TeiBrito en Agosto 01, 2015, 03:55:40 PM
Hola de nuevo, en vista de que ya me habéis solucionado un problemilla pruebo con otro al que no le encuentro remedio. Cuando mi personaje salta y golpea un bloque por debajo(o una plataforma si lo prefieren) en vez de caer a velocidad normal se tele-transporta hasta el suelo. Este es el código que tengo para las colisiones verticales:

if (place_meeting(x,y+vsp,obj_Wall))
{
    while(!place_meeting(x,y+sign(vsp),obj_Wall))
    {
        y += sign(vsp);
    }   
    vsp= 0;
}
y += vsp;

Espero haberme explicado bien y gracias de antemano.
Título: Re:Problemas con colisiones por debajo de los bloques
Publicado por: jodidox en Agosto 01, 2015, 04:21:24 PM
No logró entenderte muy bien, podrías ser un poco más especifico!  8)
Título: Re:Problemas con colisiones por debajo de los bloques
Publicado por: TeiBrito en Agosto 01, 2015, 04:55:49 PM
A ver si lo consigo  :-[ imagínate que saltas y te das con la cabeza en el techo... lo normal es que caigas con la velocidad que te de la gravedad no? pues mi personaje al darse el cabezazo con el techo automaticamente aparece en el suelo... vale la metafora?  XD
Título: Re:Problemas con colisiones por debajo de los bloques
Publicado por: jodidox en Agosto 01, 2015, 05:09:20 PM
jajajaja, xD bueno, usas  :GM8: O :GMS: ?
Título: Re:Problemas con colisiones por debajo de los bloques
Publicado por: jodidox en Agosto 01, 2015, 05:13:46 PM
Bueno, ahí va:

Puedes usar lo mismo de parent para el obj_Wall, en vez de usar
if (place_meeting(x,y+vsp,obj_Wall))

pon en el evento colision con el obj_Wall:

move_contact_solid(direction, 12)

y por favor dejame ver code del movimiento del player,
Título: Re:Problemas con colisiones por debajo de los bloques
Publicado por: TeiBrito en Agosto 01, 2015, 05:35:05 PM
Este es el movimiento del player
//teclas de entrada
key_right = keyboard_check (vk_right);
key_left = -keyboard_check (vk_left);
key_jump = keyboard_check_pressed (vk_space);
key_jump_held = keyboard_check (vk_space);

//Reaccion a las teclas
move = key_left + key_right;
hsp = move * movespeed;
if (vsp < 10) vsp += grav;

if (place_meeting(x,y+1,obj_Wall))
{
    vsp = key_jump * -jumpspeed;
}


if (key_jump) && (place_meeting(x+1,y,obj_Wall) || place_meeting(x-1,y,obj_Wall))
    {
    vsp = -jumpspeed;
    }

Lo saque de un tuto d la red... soy novato ya sabes jeje. No entendió muy bien el cambio que me recomendaste que hiciera... uso Studio por cierto.
Título: Re:Problemas con colisiones por debajo de los bloques
Publicado por: jodidox en Agosto 01, 2015, 05:49:10 PM
if (place_meeting(x,y+1,obj_Wall))
{
    vsp = key_jump * -jumpspeed;
}


if (key_jump) && (place_meeting(x+1,y,obj_Wall) || place_meeting(x-1,y,obj_Wall))
    {
    vsp = -jumpspeed;
    }


Bueno, aquí radica todo, quizás sería mejor cambiarlos para que no te confundas,
podes pasarme el gmx o mejor aún el gmz, así te puedo ayudar más fácil.  :)