Exemple #1
0
 void Bomb(IBombable b)
 {
     if (b == null)
     {
         return;
     }
     b.Bomb(this);
 }
Exemple #2
0
    public void Explode()
    {
        //Debug.Log("KABOOM");
        if (isExploding)
        {
            return;
        }
        rb2D.velocity = Vector2.zero;
        isExploding   = true;
        isFlashing    = false;
        sprite.material.SetFloat("_FlashAmount", 0);
        transform.localScale = new Vector2(radiusOfEffect, radiusOfEffect);
        animator.SetTrigger("Explode");
        audioSource.clip = explosionSound;
        audioSource.loop = false;
        audioSource.Play();
        Collider2D[] hits = Physics2D.OverlapCircleAll(transform.position, radiusOfEffect);
        foreach (Collider2D element in hits)
        {
            IDamageable damageable = null;
            if (element.tag == "Player")
            {
                damageable = element.transform.parent.gameObject.GetComponent <IDamageable> ();
            }
            else
            {
                damageable = element.gameObject.GetComponent <IDamageable> ();
            }

            IBombable bombable = element.GetComponent <IBombable> ();
            if (bombable != null)
            {
                bombable.Bombed();
            }

            if (damageable != null)
            {
                damageable.Damage(damage);
            }
        }
    }
Exemple #3
0
    void ProcessCollisions()
    {
        Collider[] colliders = Physics.OverlapSphere(transform.position, radius);
        foreach (Collider hit in colliders)
        {
            if (hit == null)
            {
                continue;
            }

            GameObject g = hit.gameObject;

            IBombable b = g.GetComponent <IBombable>();
            if (b != null)
            {
                Bomb(b);
            }

            if (g.layer == LayerMask.NameToLayer(ZeldaLayers.WALLS))      // TODO
            {
                BlastWall(g);
            }
        }
    }
 public void DeRegisterBombable(IBombable bombable)
 {
     bombables.Remove(bombable);
 }
 public void RegisterBombable(IBombable bombable)
 {
     bombables.Add(bombable);
 }