Hola comunidad, creo este tema porque no me quedo más remedio. He buscado por todas partes y no logro implementar el siguiente sistema:
Quiero que cuando un personaje supongamos colisione con una pared de la izquierda y si se tiene precionado el boton left, se deslice suavemente hacia abajo y si se preciona el boton de salto mientras se sigue deslizando que salte hacia el lado derecho como se ve en la imagen de abajo:
(http://static.giantbomb.com/uploads/original/0/4/10371-sms_wall_kick.jpg)
A esto se lo conoce como wall jump, es decir salto en la pared. He tratado de hacer mi código pero no da resultado. También he bajado muchos engines que hay en internet pero no pude probar ninguno, puesto que estaban en formato gm6, gm7, gm8, gmk y como yo tengo Gamemak Studio 1.4 me da error puesto que hay muchos códigos que quedaron obsoletos de esas versiónes viejas de Gamemaker.
Lo que si puedo ir adelantandosle es el código de plataforma que tiene mi personaje
En el Evento create
///Iniciación de variables
grav = 0.2;
hsp = 0;
vsp = 0;
jumpspeed = 6;
movespeed = 2;
En en evento steep:
//Teclas asignadas al jugador
key_right = keyboard_check(vk_right);
key_left = -keyboard_check(vk_left);
key_jump = keyboard_check_pressed(vk_space);
//Acción de las teclas
move = key_left + key_right;
hsp = move * movespeed;
if (vsp < 10) vsp += grav;
if (place_meeting(x,y+1,obj_piso))
{
vsp = key_jump * -jumpspeed
}
//Colisión horizontal
if (place_meeting(x+hsp,y,obj_piso))
{
while(!place_meeting(x+sign(hsp),y,obj_piso))
{
x += sign(hsp);
}
hsp = 0; //
}
x += hsp;
//Colisión vertical
if (place_meeting(x,y+vsp,obj_piso))
{
while(!place_meeting(x,y+sign(vsp),obj_piso))
{
y += sign(vsp);
}
vsp = 0;
}
y += vsp;
¿Alguna idea de como implementar este sistema?
Un ejemplo masomenos rancio:
Cita de: TheSandBoxMKG en Noviembre 03, 2014, 06:01:03 PM
Un ejemplo masomenos rancio:
Gracias por el ejemplo, el problema es que en mi juego la física es perfecta, por eso puse el código en la descripción por si alguien lo quiere utilizar.
Estuve viendo el ejemplo y no logro adaptarlo a mi código.