public void Kill() { if (!isDead) { isDead = true; if (roomController) { roomController.DecrementAliveEnemyCount(); } float debrisForce = 1000f; float debrisTorque = 500f; CraigController craig = player.GetComponent <CraigController>(); if (craig.explodingEnemies) { Instantiate(explosion, explodeLocation.position, Quaternion.identity); //Damage other enemies here: debrisForce += 500f; debrisTorque += 500f; Collider2D[] hitColliders = Physics2D.OverlapCircleAll(explodeLocation.position, 8f); foreach (Collider2D collider in hitColliders) { IDamageable <float> damageable = collider.GetComponent <IDamageable <float> >(); if (damageable != null) { damageable.Damage(craig.explodingEnemyDamage); } } } else { Instantiate(poofEffect, explodeLocation.position, Quaternion.identity); } foreach (GameObject debrisPiece in debris) { GameObject part = Instantiate(debrisPiece, explodeLocation.position, Quaternion.identity); Rigidbody2D rb = part.GetComponent <Rigidbody2D>(); Vector3 velocity = new Vector2(Random.Range(-10f, 10f), Random.Range(-10f, 10f)); velocity.Normalize(); rb.AddForce(velocity * debrisForce); rb.AddTorque(Random.Range(0f, debrisTorque)); } Destroy(gameObject); } }