Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Chioban en Septiembre 25, 2014, 05:03:58 PM

Título: Sala de jefes estilo Megaman
Publicado por: Chioban en Septiembre 25, 2014, 05:03:58 PM
Buenas a todos.

Hace poco que termine la primera ''mazmorra'' en mi videojuegucho. Y ahora estoy construyendo la sala en donde ha de combatir con el jefe.

No obstante, mientras hacia el Room se me vino una duda a la mente. ¿Como hacer que la sala en sí funcione como en los juegos de Megaman? Es decir, que se cierren la puerta de entrada y salida cuando entres, y que luego de derrotar al jefe vuelvan a abrirse.

Gracias por leer  :)
Título: Re:Sala de jefes estilo Megaman
Publicado por: Mega G en Septiembre 25, 2014, 05:17:27 PM
Puedes hacer un objeto que sea el controlador de las puertas.
Si en tu juego los niveles se mueven hacia la derecha, puedes poner en el controlador de la puerta:


<Step>
if obj_player.x>cordenada_x_del_centro_de_la_sala_del_boss and instance_exists(obj_puerta_boss)=false and instance_exists(obj_boss)=true
{
instance_create(cordenadax_entrada,cordenaday_entrada,obj_puerta_boss);
instance_create(cordenadax_salida,cordenaday_salida,obj_puerta_boss);
}


Así cuando llegues hacia el centro de la sala del boss (para que no se cierre la puerta justo cuando estás debajo y te aplaste) se crean 2 instancias de un objeto puerta que bloquearán
la habitación.


Luego, para hacer que se vuelva a abrir (que la puerta se destruya) una vez derrotado al enemigo puedes poner en el <Step> del controlador:


if instance_exists(obj_boss)=false
{
if instance_exists(obj_puerta_boss)
{
with(obj_puerta_boss) { instance_destroy(); }
}
}


Es decir, cuando hayas derrotado al enemigo y se haya destruido, destruirá también las puertas.




Espero que te sirva.
¡Saludos!


EDIT: Una vez vueltas a abrir las puertas, el controlador ya no hace ninguna función así que puedes hacer un instance_destroy() en el código justo después de abrir las puertas.
Título: Re:Sala de jefes estilo Megaman
Publicado por: Chioban en Septiembre 25, 2014, 08:20:54 PM
Buenas [user]Mega G[/user].

Estaba terminando de testear cuando decidí probar el código. Entonce me salio esto:

[spoiler]___________________________________________
ERROR in
action number 1
of  Step Event
for object Controlador:

Error in code at line 1:
   if OBJ_Sunson.x = 1568 and instance_exists(Puertas)=false and instance_exists(ENG_Ciclomorte)=true
     ^
at position 4: Unknown variable OBJ_Sunson[/spoiler]

Posiblemente hice algo mal ya que soy un paquete en lo que se trata de utilizar GML (Por eso uso las opciones que vienen por defecto  :-[). Me ayudaria mucho si me dijeras como solucionar el error.

Gracias por leer.
Título: Re:Sala de jefes estilo Megaman
Publicado por: penumbra en Septiembre 25, 2014, 09:24:50 PM
El error tiene una de dos posibles causas

a) OBJ_Sunson es una variable que no está inicializada correctamente (si es una variable, debería contener el índice de un objeto o el identificador de una instancia)

b) En el juego no existe ningún objeto de nombre OBJ_Sunson y GM piensa que es una variable (que tampoco existe)
Título: Re:Sala de jefes estilo Megaman
Publicado por: Chioban en Septiembre 25, 2014, 10:55:54 PM
Tuve que utilizar solo el segundo código para que no siguiera dando error.

No es el resultado que esperaba pero al menos se le acerca bastante. Muchas gracias a ambos.