void Bomb(IBombable b) { if (b == null) { return; } b.Bomb(this); }
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); } } }
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); }