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.
No logró entenderte muy bien, podrías ser un poco más especifico! 8)
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
jajajaja, xD bueno, usas :GM8: O :GMS: ?
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,
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.
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. :)