예제 #1
0
        /// <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;
                    }
                }
            }
        }
예제 #2
0
        /// <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
            }
        }
예제 #3
0
        /// <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;
                }
            }
        }