Esempio n. 1
0
    void HitTarget()
    {
        EnemigoScript enemigo = target.GetComponent <EnemigoScript>();

        enemigo.setCurrentHealth(enemigo.vidaActual - damage);
        Destroy(gameObject);
    }
Esempio n. 2
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.tag.Equals("Enemigo"))
     {
         EnemigoScript enemigo = other.GetComponent <EnemigoScript>();
         int           damage  = trampa.danyoPorNivel[trampa.nivelActual];
         enemigo.setCurrentHealth(enemigo.vidaActual - damage);
         //prefabActivadaNvl1.SetActive(true);
     }
 }
Esempio n. 3
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.tag.Equals("Enemigo"))
     {
         EnemigoScript enemigo = other.GetComponent <EnemigoScript>();
         //El da�o del rayo sera en % de vida
         nivelActual = GameManager.nivelCasaHechizos;
         int damageHechizo = (int)(statsHechizoPorNivel[nivelActual] * enemigo.vidaPorNivel[enemigo.nivelActual]);
         enemigo.setCurrentHealth(enemigo.vidaActual - damageHechizo * mejoraDanyoRayo);
     }
 }
Esempio n. 4
0
 private void Start()
 {
     enemigo = GameObject.Find("Enemigo").GetComponent <EnemigoScript>();
 }
Esempio n. 5
0
    protected void mover(float mejoraDanyo)
    {
        if (!isMoving)
        {
            enemigos           = GameManager.Instance.listaEnemigosRonda; // obtener todos los enemigos de la escena
            enemigosDistancias = new Dictionary <GameObject, float>();


            if (!isEnemigoFijado && enemigos.Count > 0)// intentar fijar un enemigo si hay
            {
                foreach (GameObject enemigo in enemigos)
                {
                    if (enemigo != null)
                    {
                        // distancia enemigos
                        Vector3 pOrigen  = transform.position;
                        Vector3 pEnemigo = enemigo.transform.position;
                        if (!enemigosDistancias.ContainsKey(enemigo))
                        {
                            enemigosDistancias.Add(enemigo, Vector3.Distance(pOrigen, pEnemigo));
                        }
                    }
                }
                // ordenamos por distancia de menos a mas
                List <KeyValuePair <GameObject, float> > enemigosDistanciaOrdered = enemigosDistancias.ToList();
                enemigosDistanciaOrdered.Sort((pair1, pair2) => pair1.Value.CompareTo(pair2.Value));
                float distanciaMasCorta = enemigosDistanciaOrdered[0].Value;

                if (distanciaMasCorta <= rangoVision)
                {
                    enemigoFijado = enemigosDistanciaOrdered[0].Key;
                    agent.SetDestination(enemigoFijado.transform.position);
                    isEnemigoFijado = true;
                    isMoving        = true;
                    animator.SetBool("SeMueve", true);
                }
            }
        }
        else
        {
            if (enemigoFijado == null)
            {
                isAtacking      = false;
                isEnemigoFijado = false;
                animator.SetBool("Ataca", false);
            }
            else if (isEnemigoFijado)
            {
                if (agent.remainingDistance <= rangoAtaque)
                {
                    // el enemigo esta dentro del rango de ataque

                    // parar el agent y true el flag de atacar

                    isMoving = false;
                    animator.SetBool("SeMueve", false);
                    agent.SetDestination(this.transform.position);

                    isAtacking = true;
                    animator.SetBool("Ataca", true);
                }
                else
                {
                    agent.SetDestination(enemigoFijado.transform.position); //por si el objetivo se mueve
                }
            }

            if (agent.remainingDistance == 0)// para cuando se pulsa a otra direccion hay que comprobar cuando para
            {
                isMoving = false;
                animator.SetBool("SeMueve", false);
            }
        }

        if (isAtacking)
        {
            if (enemigoFijado == null)
            {
                // si el enemigo ha muerto
                isAtacking      = false;
                isEnemigoFijado = false;
                animator.SetBool("Ataca", false);
            }
            // comprobar que el enemigo ha muerto antes de estos calculos
            else if (Vector3.Distance(transform.position, enemigoFijado.transform.position) > (rangoAtaque + 0.2)) // el 0.2 es por el tama�o de las unidades
            {
                // si el enemigo sale del rango de ataque desfijarlo
                isAtacking      = false;
                isEnemigoFijado = false;
                animator.SetBool("Ataca", false);
            }
            else
            {
                //Atacara pasado 1s
                if (attackCoutDwon <= 0f)
                {
                    EnemigoScript enemigo = enemigoFijado.GetComponent <EnemigoScript>();
                    enemigo.setCurrentHealth(enemigo.vidaActual - Mathf.RoundToInt(danyoPorNivel[nivelActual] * mejoraDanyo));
                    enemigo.setCurrentHealth(enemigo.vidaActual - (int)(danyoPorNivel[nivelActual] * buffDamage));
                    attackCoutDwon = 1f / attackSpeed;
                }

                attackCoutDwon -= Time.deltaTime;
            }
        }
    }