void HitTarget() { EnemigoScript enemigo = target.GetComponent <EnemigoScript>(); enemigo.setCurrentHealth(enemigo.vidaActual - damage); Destroy(gameObject); }
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); } }
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); } }
private void Start() { enemigo = GameObject.Find("Enemigo").GetComponent <EnemigoScript>(); }
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; } } }