Noticias

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

¿Como restablezco la vida para ai 2?

Iniciado por brok, Noviembre 08, 2015, 03:37:34 PM

Tema anterior - Siguiente tema
Resulta que cuando duplico el ai la vida con el slider no funciona pero no funciona el restar vida al enemigo y nunca lo mato ¿que puedo hacer?using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class vidaPlayerAI : MonoBehaviour {
    public float vidaEnemigo = 100f;
        public GameObject payerai;
    public Slider enemigoSlider;
    public void RestarVidaEnemigo()
    {        vidaEnemigo -= 5f;
        enemigoSlider.value = vidaEnemigo;
                if (vidaEnemigo <= 0f )
        {
            Destroy(payerai);
            
        }
        
        
    }
   
    
}

Asin el slider se descrementa bien, pero el enmigo no muere sus variable vida no disminulle y no llega hacer nada de las hordenes que le doy con otros script.using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class vidaPlayerAI : MonoBehaviour {
    public float vidaEnemigo = 100f;
        public GameObject playerai;
    public Slider enemigoSlider;
    public void RestarVidaEnemigo()
    {        vidaEnemigo -= 5f;
        enemigoSlider.value = vidaEnemigo;
                if (vidaEnemigo <= 0f )
        {
            Destroy(playerai);
            enemigoSlider.value = vidaEnemigo + 100;
                   }
        
        
    }
   
    
}

Hola ^^.Soy novato aún, pero quizá funcione lo siguiente:Lo primero me doy cuenta de que cuando el enemigo fallece, matas al jugador (¿?)... O tal ve entendí mal... 
En cualquier caso, cuando tu enemigo muere le pones la vida a 100 otra vez... Así nunca morirá, un frame a lo mejor se ejecuta incluso hasta 60 veces/segundo (Creo).Imagino que eso será parte de tu script y que harás llamada a través de un evento o del update cuando se de a un botón, por ejemplo. (no lo sé).Teniendo en cuenta eso prueba a hacer una cosa. (A mi en su momento me dio error, quizá fue que probé mal y pues, una ventaja):Crea un evento tal que así:
public delegate MuereSlider(); public static event MuereSlider SinVida;https://unity3d.com/es/learn/tutorials/modules/intermediate/scripting/events" rel="external nofollow">https://unity3d.com/es/learn/tutorials/modules/intermediate/scripting/eventshttps://msdn.microsoft.com/es-es/library/aa288460(v=vs.71).aspx" rel="external nofollow">https://msdn.microsoft.com/es-es/library/aa288460(v=vs.71).aspx Añades el evento al propio enemigo en una función en el que lo destruyas o en el que hagas que haga lo que sea. "¿Y si quiero varios?". Los eventos son compartidos en Unity por lo que veo, pero que no cunda el pánico, lo propio sería darles una ID para saber cuál tiene que morir. De todas formas es una idea, no sé si te servirá. Pero en principio, creo que sólo el script del gameobject puede destruir el gameobject. Aunque aún tengo que hacer pruebas con eso. Un saludo y ánimo.
 

Noviembre 09, 2015, 04:30:30 PM #3 Ultima modificación: Noviembre 09, 2015, 04:31:18 PM por brok
ya lo he solucionado pero ahora tengo otro problema con otro script Destroy(GameObject.FindGameObjectWithTag("Enemigo"));

Etiquetas: