Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: dokii en Agosto 24, 2014, 02:25:19 AM

Título: pasar de nivel, matando cierta cantidad de enemigos
Publicado por: dokii en Agosto 24, 2014, 02:25:19 AM
hola. En mi juego hay una parte de juego de naves, donde los enemigos salen al azar. Lo que quiero es que para pasar de nivel mi personaje elimine a una cierta cantidad de enemigos (que son 3) para finalizarlo.
Implemente este codigo que encontre
total=instance_number(malo1) + instance_number(malo2) + instance_number(malo3);
if total<=10 { finalizar_nivel(); }

pero el juego se me pega.
Como puedo arreglarlo?
Saludos
Título: Re:pasar de nivel, matando cierta cantidad de enemigos
Publicado por: penumbra en Agosto 24, 2014, 02:36:58 AM
Lo que estás haciendo es contar cuántos enemigos hay en total, después, si hay al menos un enemigo (entre 1 y 10) se llama al script finalizar_nivel. De tal manera que nunca pasarás al siguiente nivel al eliminar a tres enemigos.

Primero, En el jugador deberías crear una variable que te indique cuántos enemigos has eliminado, por ejemplo kills
CREATE
[gml]kills = 0[/gml]

Cada que elimines un enemigo, la variable kills debe aumentar en +1. Esto no puedo decirte exactamente dónde y cómo, porque no sé cómo tengas tu código, pero se supone que al eliminar a un enemigo, su instancia se debe destruír, entonces, en el evento DESTROY del objeto enemigo:
[gml]obj_jugador.kills += 1[/gml]

Lo ideal es que en todo juego haya un objeto controlador que sería el que se encargue de, entre otras cosas, pasar de nivel. En este objeto, en STEP
[gml]if (obj_jugador.kills == 3) { finalizar_nivel(); obj_jugador.kills = 0 }[/gml]

Suponiendo que el script finalizar_nivel() está correcto y hace que se avance a la siguiente habitación.
Título: Re:pasar de nivel, matando cierta cantidad de enemigos
Publicado por: dokii en Agosto 24, 2014, 03:57:34 AM
miil gracias .. me funciono super  :)

** Probando otra vez descubri que al colisionar con los enemigos me tira un error
FATAL ERROR in
action number 1
of  Step Event0
for object objeto_control:

Push :: Execution Error - Variable Get -7.__b__(100003, -1)
at gml_Object_objeto_control_Step_0 (line 7) - if __b__
Título: Re:pasar de nivel, matando cierta cantidad de enemigos
Publicado por: Xizotono en Agosto 24, 2014, 12:41:31 PM
Postea el codigo/s de STEP, porque el codigo del señor Penumbra esta bien y es lo mas sencillo de hacer.
Título: Re:pasar de nivel, matando cierta cantidad de enemigos
Publicado por: dokii en Agosto 25, 2014, 05:19:06 PM
Yo quiero que cuando mate 20 enemigos salga la ventana de ganaste, eso funciona bien, solo me causa error cundo colisiono con un enemigo.
este es el codigo que use:
if (obj_nave.kills == 20) {gana = 1; obj_nave.kills = 0 }

*** ese era , perdon **
Título: Re:pasar de nivel, matando cierta cantidad de enemigos
Publicado por: diegohernans en Agosto 26, 2014, 06:33:11 AM
mmm no entiendo porque sale obj_nave.kills == 20 y despues obj_jugador.kills = 0
nave y despues jugador
Título: Re:pasar de nivel, matando cierta cantidad de enemigos
Publicado por: LittleHero en Octubre 17, 2014, 07:56:31 PM
Hola comunidad se resolvió este problema? yo tengo problemitas  a la hora de reproducir el juego me tira un error que dice

FATAL ERROR in
action number 1
of  Step Event
for object player:

COMPILATION ERROR in code action
Error in code at line 1:
   if object_player.kills == 5) { instance_destroy (object_paredmovible); object_player.kills = 0}
                                                                                                                     ^
at position 28: Unexpected symbol in expression.

ayuda porfavor :'(

soy un novato en esto de los codigos y en todo xD
intento hacer un juego estilo beat em' up en el cual coloco una pared invisible y quiero destruirla después de haber matado cierta cantidad de enemigos para no terminar el juego solo avanzando y para que sea mas entretenido, se los agradezco mucho saludos :)