Beispiel #1
0
    IEnumerator HaceDaño(StatsPersonajes stats, float retraso)  //Creamos una corutina para hacer el daño, debido a que queremos que este se realice hasta que finalice la animación de ataque.
    {
        ManejadorMusica.instancia.Reproducir("Ataque Espada");
        yield return(new WaitForSeconds(retraso)); //Esperemos unos segundos equivalente a la variable "retraso", y después, realizamos el proceso de daño.

        int miDaño = misStats.daño.ObtenerValor(); //Creo una variable que almacenará el daño de mi objeto.

        stats.RecibirDaño(miDaño);                 //Accede al método "RecibirDaño" del "Objetivo" que toma como argumento el daño de mi objeto.

        if (stats.saludActual <= 0)                //Si la salud del enemigo es menor o igual a 0...
        {
            enCombate = false;                     //Entonces ya no estamos en combate (false).
        }
    }
    IEnumerator EliminaEfectoHabilidad(StatsPersonajes statsobjetivo, int indiceHabilidad) //Corutina que elimina el efecto de la habilidad, después de que su duración (en segundos) ha pasado...
    {
        float duracion            = habilidadesEnBarra[indiceHabilidad].ObtenerDuracionEfecto();
        var   parametrosHabilidad = new parametrosHabilidad(statsobjetivo); //Obtengo los parametros de mi objetivo.

        //Obtengo su duración al acceder a las propiedades de su clase (En mi arreglo "habilidades").
        yield return(new WaitForSeconds(duracion)); //Establezco que después de los segundos de duración...


        habilidadesEnBarra[indiceHabilidad].EliminarEfecto(parametrosHabilidad); //Accedo al método "EliminarEfecto" que toma los parametros del objetivo.
        habilidadesEnBarra[indiceHabilidad].ejecutandose       = false;          //Establezco que mi habilidad ya no se está ejecutando. (Debido a que su efecto se ha disipado).
        habilidadesEnBarra[indiceHabilidad].iconoYaEstablecido = false;          //Establece que mi icono NO está establecido, porque el efecto de la habilidad ya se eliminó.
        Destroy(iconosDuracionHabilidad[indiceHabilidad]);                       //Elimina el gráfico del efecto de habilidad.
    }
Beispiel #3
0
    public void Atacar(StatsPersonajes objetivo)                       //Creo un método llamado "Atacar" que utilzia como argumento los stats de su objetivo.
    {
        if (cooldownAtaque <= 0f)                                      //Si mi "cooldown" (Tiempo de espera entre ataques) es menor o igual a 0...
        {
            StartCoroutine(HaceDaño(objetivo, tiempoAnimacionAtacar)); //Iniciamos la corutina que genera el dañi, tomando como arg los stats del objetivo, y el tiempo que toma la animación de "Atacar" en realizarse.
            if (atacando != null)
            {
                atacando();
            }

            cooldownAtaque     = 3f / velocidadAtaque; //Restablezco el cooldown, y lo divido entre la velocidad del jugador.  (A mayor velocidad del jugador, menor cooldown.)
            enCombate          = true;
            tiempoUltimoAtaque = Time.time;
        }
    }
    void Start()
    {
        iconosDuracionHabilidad = new GameObject[habilidadesEnBarra.Length]; //Establezco que el tamaño de mi arreglo de iconos de duración será igual al numero de elementos que haya en mi arreglo "habilidades".
        //Situación similar para los dos arreglos siguientes.
        coolDownHabilidades = new float[habilidadesEnBarra.Length];
        duracionHabilidades = new float[habilidadesEnBarra.Length];

        estaOcupado = false;

        ParametrosInicialesHabilidades();

        statsJugador          = GetComponent <StatsPersonajes>(); //Obtengo los stats del jugador.
        interaccionDelJugador = GetComponent <ControladorJugador>();

        barraHabilidades.SetActive(false); //Y mi barra de habilidades estará desactivada.
    }
    // Update is called once per frame
    void Update()
    {
        float distancia = Vector3.Distance(objetivo.position, transform.position); //Creamos una variable que almacena la distancia entre el objetivo y el enemigo.

        if (distancia <= radioAlerta)                                              //Si la distancia es menor o igual al radio de alerta...
        {
            agente.SetDestination(objetivo.position);                              //Entonces, establecemos que el enemigo se desplace a la posición del jugador.

            if (distancia <= agente.stoppingDistance)                              //Si la distancia (entre el jugador y el enemigo) es menor o igual a la distancia a la que se detiene el enemigo...
            {
                //Atacarlo
                StatsPersonajes objetivoStats = objetivo.GetComponent <StatsPersonajes>(); //Obtiene los stats de su objetivo.
                if (objetivoStats != null)
                {
                    combateEnemigo.Atacar(objetivoStats); //Ejecuta el método "Atacar" tomando como argumento las propiedades de su objetivo (Primordialmente, el jugador).
                }

                EncararObjetivo(); //Método que se encarga de modificar la rotación cuando el objetivo se encuentre demasiado cerca.
            }
        }
    }
Beispiel #6
0
 private void Start()
 {
     misStats        = GetComponent <StatsPersonajes>();  //Establezco que "misStats" es igual al componente "StatsPersonajes" de mi objeto.
     velocidadAtaque = misStats.velocidad.ObtenerValor(); //Obtengo la velocidad del pj.
 }
Beispiel #7
0
 public parametrosHabilidad(StatsPersonajes objetivo)
 {
     this.objetivo     = objetivo;
     this.armaduraBase = objetivo.armadura.ObtenerValor();
 }
Beispiel #8
0
    public StatsPersonajes misStats; //Variable que almacena los "Stats" de mi enemigo.

    private void Start()
    {
        jugadorAcceso = ManejadorJugador.instancia;       //Almaceno los datos de mi jugador al igualar mi variable con la "instancia" de mi clase "ManejadorJugador".
        misStats      = GetComponent <StatsPersonajes>(); //Obtengo los stats de mi enemigo, al obtener su componente ("StatsPersonajes").
    }