Hola, tengo otra nueva duda xD , como puedo hacer que cuando muera un enemigo o mi personaje principal , que se cambie el sprite al sprite de muerto y luego desaparezca al terminar la animacion?  lo he intentado de varias maneras pero las entidades que le pongo a un objeto se cumplen instantaneamente ,  desaparece el objeto antes de que se vea la animacion y no se ve nada x.x

si alguien conoce alguna manera o tiene algun ejemplo que me pueda ayudar muy agradecido :)

prueba creando un objeto llamado:

obj_muerto

a ese objeto asignale la animacion de morir, y en el evento end animation ponle el d&d drestoy self

ahora cuando se cumplan las condiciones de muerte de tu personaje llamese vidas barra o lo que gustes. ponle un instace_change o con el D&D por la de obj_muerto, pero tambien dependeria si muere en el aire, agua o alguna otra cosa.

hice lo que me dijiste, me hice un objeto (obj_dead) y lo configure de la siguiente manera :

[gml]
evento create
image_speed=1
gravity_direction=270
gravity=0.5

evento colision con el piso
hspeed=0;

evento animation end
instance_destroy()
room_restart()
[/gml]

pero la animacion se reproduce demasiado rapido y no empieza en el mismo lugar donde estaba el personaje sino que al lado...


para cuando se muere porque se cayo puse esto:

[gml]//si cae a un hoyo. 
if y > room_height
{
if lives >0
instance_change(obj_dead,1)
{lives-=7; x=xstart; y=ystart; dead=true; alarm[1]=1*room_speed;}
else
if lives <1

instance_destroy()
sleep(1000);room_restart();

}
[/gml]

pero no me muestra la animacion de muerte y me reinicia la room automaticamente. a que se pude deber?


[gml]
//Cuando muera por un enemigo.

//Esto reinicia el room, por lo que tu personaje aparecer? donde apareci? cuando empezo el room, osea que donde lo pusiste para empezar.
//En otras palabras en: x = xstart; y = ystart;
room_restart()

//Si quieres que la animacion se reproduzca mas lenta asignale un numero menor a 1 a:
image_speed = 1



//Cuando cae en un agujero

//Estaba medio desordenado, yo te lo ordene un poco.
if y > room_height
{
if lives > 0
{
  instance_change(obj_dead,1)
}
}
else
{
instance_destroy()
sleep(1000)
room_restart()
}

//Esto no se porque lo pusiste, no veo que funcion cumple, ya que cambia el objeto, por ende no va a servir de nada. Pero tu sabes para que lo pusiste, asi que ponlo donde va, pero no borres nada, asi deberia funcionar.
{lives-=7; x=xstart; y=ystart; dead=true; alarm[1]=1*room_speed;}
[/gml]

lo logre hacer?? , pero sigo teniendo un error, mi personaje al caer muere y pierde una vida, pero cuando las pierde por haber colisionado con el enemigo realiza la accion de morir pero la vida no se le resta. x.x

lo trate de solucionar asi:

Evento Colision con el enemigo
[gml]

if dead=false // si personaje esta vivo
{
  if health>0 {health-=1;} // si la energia esta mayor que 0 reducimos 1 punto de energia
  else {dead=true;} // si la energia esta igual o menor que 0 hacemos que muera
}

//Si quieres que el jugador se mueva un poco para atras por las dudas pon:
x = x - 32
//Y lo que debes poner si o si(Que el enemigo se destruya) es:
with other
{
instance_destroy()
}
[/gml]

en este caso mi personaje pierde toda su salud pero no se le restan vidas..


En donde le estas poniendo el {lives -= 1} que le restaria la vida?

[gml]
if dead=false // si personaje esta vivo
{
  if health>0 {health-=1;} // si la energia esta mayor que 0 reducimos 1 punto de energia
  else {dead=true;} {lives-=1} // si la energia esta igual o menor que 0 hacemos que muera
}
[/gml]

ahora le pegan 3 veces y se muere .. xD .. estoy un poco confundido, quiero que al chocar con el enemigo pierda 1 de health , y que si llega a chocar y le queda un punto de vida , muera, pero no se como escribirlo..

[gml]
if dead=false
{
if health > 0
{
  health -= 1;
}
else
{
  dead = true;
  lives -= 1;
}
}
[/gml]

Prueba ahi

ocurre lo mismo , sera por un asunto de variables? la verdad que me pillo el asunto, seria posible mandarte el editable para ver si lo puedes arreglar?

No te garantizo poder hacerlo, pero mandamelo si quieres :)

PD: Adjuntalo aqui, asi si yo no puedo, cualquier otro podra probar y hacerlo :D

#10 Octubre 12, 2011, 05:13:16 AM Ultima modificación: Octubre 12, 2011, 05:15:32 AM por shaggymon
ok, muchas gracias  :P lo subi


Vi un par de errores con respecto a las variables health y lives, ya arregle todo creo.

Cuando mueres vuelves al lugar donde empiezas, y cuando pierdes todas las vidas vas al menu.

Hice algunos cambios, no te se decir cuales son exactamente como para que los apliques en lo que ya tienes, asi que te dejo el editable.

Obviamente no toque nada que no tenga que ver con estas variables en tu juego, asi que todo esta perfectamente como estaba antes, de esto no te preocupes :)

de verdad no se como darte las gracias , podria ser que cuando necesites sprites me avisas y te los hago .. ? me podrias explicar cuales eran los errores?, porque no gano nada sin entender que fallaba... de verdad muchas gracias??

como puedo hacer que al perder las vidas aparezcan todos los enemigos de nuevo?

Voy a poner los objetos en color: Rojo
Voy a poner los eventos en color: Verde




Kamen


"Create"
[gml]
//Guardar las variables (En variables globales) x e y que tiene el objeto cuando empieza.
global.xinicial = x
global.yinicial = y
[/gml]

"Colision --> obj_enemy"
[gml]
//Solo cambie de la linea 7 hasta la linea 18 (Del original que tu dejaste) y las cambie por esto.
if dead=false
{
if health > 0
{
  health -= 1;
}
if health <= 0
{
lives -= 1
}
}
[/gml]

"No more lives": ELIMINADO





obj_dead


"No more lives": AGREGADO
[gml]
//Show information: (Porque esta con D&D, porque el nombre del room no me dejaba ponerlo en code (Pero dejalo asi, asi anda, a menos que lo quieras cambiar, es tu juego, sos libre de cambiarlo, obvio))

//sleep 1000 milliseconds; redrawing the screen: true
//go to room menu with transition effect Fade out and in
[/gml]

"Animation End"
[gml]
health=7;
instance_create(global.xinicial,global.yinicial,Kamen);
Kamen.dead=true;
Kamen.alarm[1]=1*room_speed;
instance_destroy()
[/gml]





obj_deadaltura


"No more lives" AGREGADO
[gml]
//Show information: (Porque esta con D&D, porque el nombre del room no me dejaba ponerlo en code (Pero dejalo asi, asi anda, a menos que lo quieras cambiar, es tu juego, sos libre de cambiarlo, obvio))

//sleep 1000 milliseconds; redrawing the screen: true
//go to room menu with transition effect Fade out and in
[/gml]

"Animation End"
[gml]
health=7;
instance_create(global.xinicial,global.yinicial,Kamen);
Kamen.dead=true;
Kamen.alarm[1]=1*room_speed;
instance_destroy()
[/gml]