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; } }