Hola, mi consulta es ¿que puedo hacer? para que cada peronaje enemigo instanciado tenga su propia vida y se destuya uno solo el que terminado de golpear.
using UnityEngine;
using System.Collections;
public class vidaAI : MonoBehaviour {
public static int vida_Ai;
public int MaxVida = 100;
public int MinVida = 0;
public int scoreValue = 10;
Animator Anim;
public AudioClip voz;
AudioSource source;
void Start ()
{
source = GetComponent<AudioSource>();
Anim = GetComponent<Animator>();
if (vida_Ai <= 0)
vida_Ai = MaxVida;
ScoreManager.score += scoreValue;
ApplyCure(0);
}
void Update()
{
StartCoroutine(DestruirEnemigo());
}
public void ApplyCure(int Value)
{
vida_Ai += Value;
vida_Ai = Mathf.Clamp(vida_Ai, MinVida, MaxVida);
}
public void QuitarVIdaAI(int Value, Vector3 hitPoint)
{
vida_Ai -= Value;
vida_Ai = Mathf.Clamp(vida_Ai, MinVida, MaxVida);
}
IEnumerator DestruirEnemigo()
{
if (vida_Ai <= 0)
{
Anim.SetFloat("golpe3", 0.0f);
Anim.SetFloat("golpe1", 0.0f);
Anim.SetFloat("golpe2", 0.0f);
Anim.SetFloat("idle", 0.0f);
Anim.SetFloat("danoEnemigo", 1.0f);
source.clip = voz;
source.Play();
yield return new WaitForSeconds(4f);
Destroy(gameObject);
yield return null;
}
}
}
Le he metido animacion y sonido.
un ejemplo de, como te comente en otro post, porque no utilizar variables estaticas
Ya he usado la de la vida_ai como static, no se muy bien a que te refieres.
pues precisamente me refiero a eso ... que la has hecho estatica. las variables estaticas son para usos concretos y si las usas para cualquier cosa, como controlar la vida de los personajes, te puedes encontrar con errores asi
Si lo cambio tengo que cambiar y enlazar un monton de cosas y sy luego no funciona
ya lo he echo y se queda la vida del enemigo a 0
bueno, si por cambiar la variable quitando el static vas a tener que cambiar y enlazar (no se a que te refieres con eso) un monton de cosas ... es una manera de para la proxima hacerlo bien desde el principio ^.^ pero vamos, que deja el static si quieres y asi no tendras que cambiar un monton de cosas pero tambien es verdad que con static te sera completamente 100% imposible controlar la vida de los enemigos.
ya lo he cambiado pero se me queda los enemigos instanciados no se mueve el slider pero quita vida bien y se destruye el que tiene que destruirse.
using UnityEngine;
using System.Collections;
public class vidaAI : MonoBehaviour {
public int vida_Ai;
public int MaxVida = 100;
public int MinVida = 0;
public int scoreValue = 10;
Animator Anim;
public AudioClip voz;
AudioSource source;
void Start ()
{
source = GetComponent<AudioSource>();
Anim = GetComponent<Animator>();
}
void Awake()
{
vida_Ai = MaxVida;
ApplyCure(0);
}
public void ApplyCure(int Value)
{
vida_Ai += Value;
vida_Ai = Mathf.Clamp(vida_Ai, MinVida, MaxVida);
}
public void QuitarVIdaAI(int Value, Vector3 hitPoint)
{
vida_Ai -= Value;
vida_Ai = Mathf.Clamp(vida_Ai, MinVida, MaxVida);
StartCoroutine(DestruirEnemigo());
}
IEnumerator DestruirEnemigo()
{
if (vida_Ai <= 0)
{
ScoreManager.score += scoreValue;
vida_Ai = MaxVida;
Anim.SetFloat("golpe3", 0.0f);
Anim.SetFloat("golpe1", 0.0f);
Anim.SetFloat("golpe2", 0.0f);
Anim.SetFloat("idle", 0.0f);
Anim.SetFloat("danoEnemigo", 1.0f);
source.clip = voz;
source.Play();
yield return new WaitForSeconds(4f);
Destroy(gameObject);
yield return null;
}
}
}
No me funciona intancioando el enemigo prefab pero cuando arrastro prefab a la escena funciona bien esto es una locura.
vidaAI vida_ai;
vida_ai = GameObject.FindGameObjectWithTag("Enemigo").GetComponent<vidaAI>();
sliderAI.value = vida_ai.vida_Ai;
Asin llamo al script vida ai desde el player
Ya lo solucione.