Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Enemigo e destruie al morir

Iniciado por ramunda, Junio 22, 2015, 09:12:13 PM

Tema anterior - Siguiente tema
Hola muy buenas , tengo un pequeño dilema con este script:

ar Vida = 400;
var choke : Transform;
function ApplyDammage (Dammage : int)
{
Vida -= Dammage;

if(Vida <= 0)
{
   Muere();
}
}
function Muere()
{clone = Instantiate(choke, transform.position, transform.rotation);
Destroy(gameObject);
}   

Es muy sencillo pero no termina de ir bien , es simplemente una cantidad de vida a un enemigo que cuando llega a 400 llama a la funcion muere y con la variable choke que en el inspector te sale que le añadas un prefab que en este caso es un eskeleto con solo la animación de morir, pues hace eso reproduce la animacion primera que es la de death, pero....hasta aqui bien...pero deberia destruirse al terminar dicha animación Destroy(gameObject); pero se queda tirda en el suelo y no se va.....alguna idea?
 
Gracias de antemano

intenta agregando this.
 
Destroy(this.gameObject);

Junio 23, 2015, 04:09:01 AM #2 Ultima modificación: Junio 23, 2015, 04:09:26 AM por GSG3D
DestroyInmediate(this.gameObject) o Destroy(this.gameObject, 0.1f)

con Destroy (this.gameobject); lo que haces es destruir el objeto que contiene el propio script (que no es lo mismo que el esqueleto con la animacion). Cuando instancias el prefab que contiene el esqueleto con la linea clone = Instantiate(choke, transform.position, transform.rotation); estas creando un objeto nuevo y por lo que das a entender es este objeto el que quieres destruir.
 
intentalo con Destroy (clone.gameobject); y creo deberias de conseguir el resultado que buscas. el problema que te surgira es que no veras la animacion porque lo eliminara tan pronto sea creado, sin dar lugar a que complete la animacion pero para solucionar este pequeño inconveniente tan sencillo como poner un retardo antes de que sea destruido Destroy (clone.gameobject, _tiempo_duracion_animacion);

Acostumbraros a recoger en una variable el GameObject previamente instanciado o clonado, siempre que queráis trabajar con él (o incluso destruirlo).

Muchas gracias por tan prontas e instructivas respuestas,da gusto ver gente como ustedes.
 
@Arthure, gracias por dedicar tiempo a explicarme la función de los scrips ya que me has ayudado y mucho a entenderlo.
 
Ahora mismo lo pondre en practica y te digo cosillas en breve  
 
Lo unico que no tengo muy claro es como le indico los segundos seria algo asi?
 
 Destroy (clone.gameobject, _3f_5f_animacion);?????
 
Espero saber de ti  : gracias!!

Cita de: pioj date=1435047745Acostumbraros a recoger en una variable el GameObject previamente instanciado o clonado, siempre que queráis trabajar con él (o incluso destruirlo).
 
Gracias por la respuesta Pioj, es algo a tener en cuanta a partir de ahora

Vaya ..algo he echo mal ahora ni muere, ni hace la animación.. una manita?

var Vida = 400;
var choke : Transform;
function ApplyDammage (Dammage : int)
{
Vida -= Dammage;

if(Vida <= 0)
{
   Muere();
}
}
function Muere()
{clone = Instantiate(choke, transform.position, transform.rotation);
Destroy(clone.gameObject,0.10f);
}   

SOLUCIONADO =  asi esta perfecto la animacion muere a los pocos segundos y el Gameobject "el eskeleto en este caso" tambien todo arreglado..GRACIAS!!!
 
dejo el codigo por si le sirve a alguien mas:

var Vida = 400;
var choke : Transform;
function ApplyDammage (Dammage : int)
{
Vida -= Dammage;

if(Vida <= 0)
{
   Muere();
}
}
function Muere()
{clone = Instantiate(choke, transform.position, transform.rotation);
Destroy(clone.gameObject,3.6f);
Destroy(gameObject);
}   

Etiquetas: