Hola de nuevo, vuelvo a estar atascado en mi intento de hacer un juego de plataformas :-[. Mi problema ahora en que no consigo que cuando un enemigo colisiona horizontalmente contra el jugador, el jugador rebote un poco.
Al jugador le tengo puestos tres corazones, para que muera cuando pierde los tres y el problema es que cuando colisiona contra el enemigo pierde los tres muy deprisa, quiero hacer que el jugador rebote cuando colisiona con el enemigo horizontalmente (en vertical tengo puesto que el enemigo muera). Este es el codigo del enemigo cuando colisiona contra el jugador:
if (place_meeting(x, y, obj_Jugador))
{
if (obj_Jugador.y < y - 32)
{
with (obj_Jugador) vsp = -jumpspeed;
instance_destroy();
audio_play_sound(snd_EnemigoMuere, 90, false);
}
else
{
audio_play_sound(snd_JugadorMuere, 90, false);
global.Corazon -= 1;
}
}
Creo que hay que poner algo en el "else" pero he probado varias y ninguna me ha funcionado. Espero que alguien me pueda ayudar.
Gracias y un Saludo a todos.
Debes agregar una variable que indique que el jugador es invulnerable un corto periodo de tiempo. Si es invulnerable no ejecuta el código de colisión con los enemigos.
¿Como se hace eso Clamud? :-[. Soy un poco novato en codigo gml, llevo poco tiempo en esto de la programación de videojuegos.
Gracias por contestar. :)
tienes que ponerle una variable al personaje, por ejemplo:
invulnerable = false
luego, cuando le hagan daño es necesario que se haga invulnerable, y para que pueda recibir daño nuevamente, basta con resetearla, a lo mejor con una alarma dentro del personaje.
[GML]
if (place_meeting(x, y, obj_Jugador))
{
if (obj_Jugador.y < y - 32)
{
with (obj_Jugador) vsp = -jumpspeed;
instance_destroy();
audio_play_sound(snd_EnemigoMuere, 90, false);
}
else
{
if (!obj_jugador.invulnerable){
audio_play_sound(snd_JugadorMuere, 90, false);
global.Corazon -= 1;
obj_jugador.invulnerable = true;
obj_jugador.alarm[0] = 60;
}
}
}
[/GML]
luego en evento alarm0
invulnerable = false
incluso puedes ponerle algun efecto de titilamiento para indicar que esta herido
Muchas Gracias Ashe y Clamud por vuestra ayuda. A funcionado!!! ;D y cada día a aprender un poco más.
Gracias de nuevo y un saludo.