Exemplo n.º 1
0
    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;
        }
    }
Exemplo n.º 2
0
    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();
            }
        }
    }
Exemplo n.º 3
0
 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;
     }
 }