예제 #1
0
    public void OnCollisionEnter(Collision collision)
    {
        if (!Missile || HasExplode)
        {
            return;
        }

        HasExplode = true;
        Destroy(Instantiate(ExplosionEffect, transform.position, transform.rotation), 2f);

        GetComponent <AudioSource>().Stop();
        GetComponent <AudioSource>().PlayOneShot(ExplosionClip);

        Collider[] collidersToDestroy = Physics.OverlapSphere(transform.position, range);

        foreach (Collider destroyObject in collidersToDestroy)
        {
            Destructible d = destroyObject.GetComponent <Destructible>();

            if (d != null)
            {
                d.DestroyGM();
            }
        }

        Collider[] collidersToAddForece = Physics.OverlapSphere(transform.position, range);

        foreach (Collider nearbyObject in collidersToAddForece)
        {
            Rigidbody rb = nearbyObject.GetComponent <Rigidbody>();

            if (rb != null)
            {
                rb.AddExplosionForce(ExplosionForce, transform.position, range);
            }
        }

        Collider[] collidersToChangeHealth = Physics.OverlapSphere(transform.position, range);

        foreach (Collider nearbyObject in collidersToChangeHealth)
        {
            PlayerManager pm = nearbyObject.gameObject.GetComponentInChildren <PlayerManager>();

            if (pm != null)
            {
                pm.MinusHealth(damage);
            }
        }
        GetComponent <MeshRenderer>().enabled = false;
        Destroy(Particles, 4f);
        Destroy(gameObject, 2f);
    }
예제 #2
0
    void Explode()
    {
        GetComponent <AudioSource>().PlayOneShot(ExplosionSound);
        GameObject g = Instantiate(ExplosionPrefab, transform.position, transform.rotation);

        Destroy(g, 3f);

        Collider[] collidersToDestroy = Physics.OverlapSphere(transform.position, range);

        foreach (Collider destroyObject in collidersToDestroy)
        {
            Destructible d = destroyObject.GetComponent <Destructible>();

            if (d != null)
            {
                d.DestroyGM();
            }
        }

        Collider[] collidersToAddForece = Physics.OverlapSphere(transform.position, range);

        foreach (Collider nearbyObject in collidersToAddForece)
        {
            Rigidbody rb = nearbyObject.GetComponent <Rigidbody>();

            if (rb != null)
            {
                rb.AddExplosionForce(explosionForce, transform.position, range);
            }
        }

        Collider[] collidersToChangeHealth = Physics.OverlapSphere(transform.position, range);

        foreach (Collider nearbyObject in collidersToChangeHealth)
        {
            PlayerManager[] pm = nearbyObject.gameObject.GetComponentsInChildren <PlayerManager>();

            foreach (var a in pm)
            {
                if (a == null)
                {
                    continue;
                }

                a.MinusHealth(damage);
            }
        }

        foreach (Collider nearbyObject in collidersToChangeHealth)
        {
            FragGrenade fr = nearbyObject.gameObject.GetComponentInChildren <FragGrenade>();

            if (fr != null)
            {
                fr.explode = true;
            }
        }

        foreach (Collider nearbyObject in collidersToChangeHealth)
        {
            EnemyStats es = nearbyObject.GetComponent <EnemyStats>();

            if (es != null)
            {
                es.Damage(damage);
            }
        }



        Destroy(gameObject, 1f);
    }