/// <summary> /// <para>Elegir una accion</para> /// </summary> /// <returns></returns> private IEnumerator ElegirAccion()// Elegir una accion { while (true) { // Esperar 3 segundos yield return(new WaitForSeconds(3.0f)); // Si no hay wp if (tempWayPoint == false) { // Sacar un numero para la accion int tempEstad = Random.Range(0, 2); switch (tempEstad) { case 0: estMov = EstadosMovimientos.Idle; break; case 1: estMov = EstadosMovimientos.Moviendose; break; case 2: estMov = EstadosMovimientos.Descansando; break; default: estMov = EstadosMovimientos.Idle; break; } } } }
/// <summary> /// <para>Cuando entras en contacto con un trigger</para> /// </summary> /// <param name="wayPoint">El otro collider</param> private void OnTriggerEnter(Collider col)// Cuando entras en contacto con un trigger { // Si tiene el tag del WayPoint if (col.tag == "WayPointMovEne") { // Destruir WP, quitar el parametro y poner el estado en Idle Destroy(tempWayPoint); wayP = false; estMov = EstadosMovimientos.Idle; tiempoWP = 0.0f; tiempoPersiguiendo = 0.0f; } if (wayPoint.tag == "Jugador") { // TODO Iniciar batalla } }
/// <summary> /// <para>Actualizador de UnidadEnemiga</para> /// </summary> private void Update()// Actualizador de UnidadEnemiga { // Si tiene algun objetivo, perseguirlo if (vision.objetivoVision != null) { estMov = EstadosMovimientos.Persiguiendo; } // Actualizador del estado de movimiento switch (estMov) { // Si esta parado case EstadosMovimientos.Idle: #region Idle // Cambiar animacion a parado anim.SetBool("isMovimiento", false); #endregion break; // Si esta moviendose case EstadosMovimientos.Moviendose: #region Moviendose // Si no tenemos prox waypoint creado if (wayP == false) { // Crear wp CrearWP(); } // Cambiar animacion a corriendo anim.SetBool("isMovimiento", true); #endregion break; // Si esta persiguiendo case EstadosMovimientos.Persiguiendo: #region Persiguiendo // Si no tenemos prox waypoint creado if (wayP == false) { // Crear wp CrearWPPersecucion(); } // Mover al enemigo Mover(); // Cambiar animacion a corriendo anim.SetBool("isMovimiento", true); #endregion break; // Si esta durmiendo case EstadosMovimientos.Descansando: #region Durmiendo //FIX Cambiar animacion a durmiendo // Cambiar animacion a parado anim.SetBool("isMovimiento", false); #endregion break; // Expepcion default: estMov = EstadosMovimientos.Idle; break; } // Si esta el waypoint y el estado no es persiguiendo if (wayP == true && estMov != EstadosMovimientos.Persiguiendo) { Mover(); tiempoWP = tiempoWP + 1 * Time.deltaTime; if (tiempoWP >= 5.0f) { // Destruir WP, quitar el parametro y poner el estado en Idle Destroy(tempWayPoint); wayP = false; estMov = EstadosMovimientos.Idle; tiempoWP = 0.0f; } } // Si esta mucho tiempo persiguiendo, descansar if (estMov == EstadosMovimientos.Persiguiendo) { tiempoPersiguiendo = tiempoPersiguiendo + 1 * Time.deltaTime; if (tiempoPersiguiendo >= 10.0f) { estMov = EstadosMovimientos.Descansando; tiempoPersiguiendo = 0.0f; } } }