void FixedUpdate() { // se crea el area rectangular (hitbox) del dañador crearHitbox(); //Debug.DrawLine(puntoA, puntoB, Color.red); // OverlapArea comprueba si un colisionador cae dentro del hitbox del atacante // los colisionadores se van a filtrar por las capas atacables especificadas // devuelve un int que indica la cantidad de colliders que entraron al hitbox int cantCollidersAtacados = Physics2D.OverlapArea(puntoA, puntoB, filtroContactoAtaque, resultsAtaqueCollider); // se recorren todos los colliders que entro al hitbox del dañador for (int i = 0; i < cantCollidersAtacados; i++) { colliderAtacable = resultsAtaqueCollider[i]; // se obtiene el script dañable del collider que entró al hitbox Dañable dañable = colliderAtacable.GetComponent <Dañable>(); // si el collider tiene el script de dañable if (dañable) { // la colision que entró al hitbox recibe daño, y se pasa como parametro este dañador // para indicar cuanto daño debe recibir el dañable dañable.recibirDaño(this); // si el dañador es una bala y colisiona con un dañable el gameobject de este script (bala) se destruye if (this.tag == "Bala") { Bala.destruirBala(this.gameObject); } } } }
// recibe como parametro un objeto de tipo Dañable para obtener la vida actual // y establecer los corazones activos e inactivos public void activarCorazonesUI(Dañable dañable) { // se recorren todos los animators de cada icono de vida for (int i = 0; i < iconoVidaAnimadores.Length; i++) { // para cada animator, se establece el parametro active como true o false // true = corazon activo (en rojo), false = corazon inactivo (vacio) // segun la vida actual del personaje dañable iconoVidaAnimadores[i].SetBool("Active", personajeDañable.VidaActual >= i + 1); } }