protected override IEnumerator ExplodeLater()
    {
        blood.Play();

        for (int i = 0; i < gibCount; i++)
        {
            Vector3      dir = Random.onUnitSphere;
            GibBehaviour gib = (GibBehaviour)Instantiate(gibPrefab, transform.position + new Vector3(0f, 1.5f, 0f) + dir, Quaternion.identity);
            gib.rigidbody.velocity = dir * gibSpeed;
        }

        // disable
        collider.enabled      = false;
        rigidbody.isKinematic = true;

        Renderer[] renderers = GetComponentsInChildren <Renderer>();

        // hide children
        foreach (Renderer renderer in renderers)
        {
            if (renderer != blood.renderer)
            {
                renderer.enabled = false;
            }
        }

        yield return(new WaitForSeconds(2f));

        Destroy(gameObject);
    }
Exemple #2
0
    protected virtual IEnumerator ExplodeLater()
    {
        yield return(new WaitForSeconds((Random.value / 2f + 0.5f) * 2f));

        ExplosionBehaviour explosion = (ExplosionBehaviour)Instantiate(explosionPrefab, transform.position, Quaternion.identity);

        explosion.transform.localScale = transform.localScale;
        explosion.Explode();

        for (int i = 0; i < gibCount; i++)
        {
            Vector3      dir = Random.onUnitSphere;
            GibBehaviour gib = (GibBehaviour)Instantiate(gibPrefab, transform.position + new Vector3(0f, 1.5f, 0f) + dir, Quaternion.identity);
            gib.rigidbody.velocity = dir * gibSpeed;
        }

        Destroy(gameObject);
    }