Exemplo n.º 1
0
    public void CurarHormiga()
    {
        if (bocadillos.hormigaSeleccionada != null && bocadillos.hormigaSeleccionada == this)
        {
            if (!this.agente.isOnOffMeshLink)
            {
                bocadillos.Curar();
            }
            else
            {
                bocadillos.Nada();
            }
        }
        if (hormigaACurar != null)
        {
            // Si es la primera vez, no tengo asignada la posicion de la hormiga a curar
            if (posHerida == Vector3.zero)
            {
                //Debug.Log("Se asigna la posicion de la hormiga a curar");
                TiempoActual = tiempoParaCurar;
                posHerida    = hormigaACurar.transform.position;
                agente.SetDestination(hormigaACurar.transform.position);
                Task.current.Succeed();
                return;
            }

            if (Vector3.Distance(this.transform.position, hormigaACurar.transform.position) < 3.8f && this.zonaDondeEsta == hormigaACurar.zonaDondeEsta)
            {
                if (Vector3.Distance(this.transform.position, hormigaACurar.transform.position) < 2.5f)
                {
                    agente.SetDestination(this.transform.position);
                }
                TiempoActual -= Time.deltaTime;
                // Si ha pasado el tiempo de cura
                if (TiempoActual <= 0)
                {
                    hormigaACurar.SumarVida();
                    //Debug.Log("Hormiga Curada");
                    // Reseteas todos los valores
                    TiempoActual = tiempoParaCurar;
                    posHerida    = Vector3.zero;
                    hormigaACurar.siendoCuradaPor = null;
                    hormigaACurar = null;
                    // Si se trataba de una orden de curar hormiga
                    if (hayOrdenCurarHormiga == true)
                    {
                        hayOrdenCurarHormiga = false;
                        SacarDeOcupadas();
                    }
                    Task.current.Succeed();
                    return;
                }
                Task.current.Succeed();
                return;
            }
            else
            {
                TiempoActual = tiempoParaCurar;
                agente.SetDestination(hormigaACurar.transform.position);
            }
            Task.current.Succeed();
            return;
        }
        // Si la hormiga ha muerto, se devuelve Fail para que siga con el BT
        else
        {
            TiempoActual  = tiempoParaCurar;
            hormigaACurar = null;
            posHerida     = Vector3.zero;
            if (hayOrdenCurarHormiga == true)
            {
                hayOrdenCurarHormiga = false;
                SacarDeOcupadas();
            }
            Task.current.Fail();
            return;
        }
    }