Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: ramunda en Junio 22, 2015, 09:12:13 PM

Título: Enemigo e destruie al morir
Publicado por: ramunda en Junio 22, 2015, 09:12:13 PM
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
Título: Enemigo e destruie al morir
Publicado por: ACarranza en Junio 23, 2015, 01:09:39 AM
intenta agregando this.
 
Destroy(this.gameObject);
Título: Enemigo e destruie al morir
Publicado por: GSG3D en Junio 23, 2015, 04:09:01 AM
DestroyInmediate(this.gameObject) o Destroy(this.gameObject, 0.1f)
Título: Enemigo e destruie al morir
Publicado por: Arthure en Junio 23, 2015, 09:23:46 AM
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);
Título: Enemigo e destruie al morir
Publicado por: pioj en Junio 23, 2015, 10:22:25 AM
Acostumbraros a recoger en una variable el GameObject previamente instanciado o clonado, siempre que queráis trabajar con él (o incluso destruirlo).
Título: Enemigo e destruie al morir
Publicado por: ramunda en Junio 23, 2015, 10:27:03 AM
Muchas gracias por tan prontas e instructivas respuestas,da gusto ver gente como ustedes.
 
@Arthure (http://unityspain.com/profile/26665-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!!
Título: Enemigo e destruie al morir
Publicado por: ramunda en Junio 23, 2015, 10:33:08 AM
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
Título: Enemigo e destruie al morir
Publicado por: ramunda en Junio 23, 2015, 12:05:51 PM
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);
}   
Título: Enemigo e destruie al morir
Publicado por: ramunda en Junio 23, 2015, 12:43:30 PM
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);
}