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