public void DeterminarDirecciónAtaque(Mirada mirada) { switch (mirada) { case Mirada.Arriba: direcciónAtaque = Vector2.up; break; case Mirada.Abajo: direcciónAtaque = Vector2.down; break; case Mirada.Izquierda: direcciónAtaque = Vector2.left; break; case Mirada.Derecha: direcciónAtaque = Vector2.right; break; default: direcciónAtaque = Vector2.down; break; } }
public void Atacar(Mirada mirada, int daño) { Debug.Log("Atacó"); DeterminarDirecciónAtaque(mirada); escala = AtacanteTransform.lossyScale; facingOffset = Vector2.Scale(offset * direcciónAtaque, escala); tamañoEscalado = Vector2.Scale(tamaño, escala); puntoA = (Vector2)AtacanteTransform.position + facingOffset - tamañoEscalado * 0.5f; puntoB = puntoA + tamañoEscalado; int hitCount = Physics2D.OverlapArea(puntoA, puntoB, filtroAtaque, AtaqueOverlapResults); for (int i = 0; i < hitCount; i++) { golpe = AtaqueOverlapResults[i]; Atacable objetivo = golpe.GetComponent <Atacable>(); if (objetivo) { Debug.Log("Dañó a " + objetivo.name); if (objetivo.atacable) { Instantiate(spark, objetivo.transform.position + new Vector3(0, 0, -0.5f), Quaternion.identity); //Desfase para proyectar la luz } daño = (int)Random.Range(daño * 0.5f, daño * 1.5f); objetivo.RecibirDanio(transform, daño); OnDamage?.Invoke(); } } }
void DeterminarDirecciónMirada(Vector2 mirada) { if (Mathf.Abs(mirada.x) > Mathf.Abs(mirada.y)) { if (mirada.x >= 0) { direccionAtaque = Vector2.right; direcciónMirada = Mirada.Derecha; } else { direccionAtaque = Vector2.left; direcciónMirada = Mirada.Izquierda; } } else if (mirada.y >= 0) { direcciónMirada = Mirada.Arriba; direccionAtaque = Vector2.up; } else { direcciónMirada = Mirada.Abajo; direccionAtaque = Vector2.down; } }