Ejemplo n.º 1
0
    void OnCollisionEnter(Collision p_HitObject){
        // Apply Kinetic damage to hit objects:
        if (v_ApplyKinetic) {
            CS_DamageModule v_DamageModule = p_HitObject.collider.GetComponent<CS_DamageModule>();
            if (v_DamageModule != null && v_ApplyKinetic) { v_DamageModule.ApplyKineticDamage(v_KineticDamage); }
            if (v_KineticShockwave)
            {
                Collider[] v_ObjectsHit = Physics.OverlapSphere(transform.localPosition, v_KineticShockwaveRadius);
                for (int objectHitIndex = 0; objectHitIndex > v_ObjectsHit.Length; objectHitIndex++)
                {
                    CS_DamageModule v_ShockWaveHitDamageModule = v_ObjectsHit[objectHitIndex].gameObject.GetComponent<CS_DamageModule>();
                    if (v_ShockWaveHitDamageModule != null) { v_ShockWaveHitDamageModule.ApplyKineticDamage(v_KineticDamage); }
                }// END - Kinetic shockwave for loop.
            }
        } // END - Apply Kinetic.

        if (v_AllowBounce) { // Bounce.
            if (v_BouncesAllowed <= 0) { // Check remaining bounce count: no more bounces.
                ShellExplode();
            } else {
                v_BouncesAllowed = v_BouncesAllowed - 1;
                v_ExplosionDamage = v_ExplosionDamage - (v_ExplosionDamage * v_EfficiencyDeduction);
                v_ExplosionRadius = v_ExplosionRadius - (v_ExplosionRadius * v_EfficiencyDeduction);
            } // END - Bounce
        } else { // END - If Allow Bounce / Start: Shell Explode on collision.
            ShellExplode();
        }
    } // END - OnCollisionEnter.
Ejemplo n.º 2
0
    } // END - Tracking.


    // ------------------------------------------------------------------------------------------------------

    private void OnCollisionEnter(Collision p_Collision){
        CS_DamageModule v_HitObjectDamageModule = p_Collision.gameObject.GetComponent<CS_DamageModule>();
        // Apply kinetic damage immediately:
        if(v_HitObjectDamageModule != null && v_ApplyKinetic) { v_HitObjectDamageModule.ApplyKineticDamage(v_KineticDamage); }
        if (v_KineticShockwave) { 
            Collider[] v_ObjectsHit = Physics.OverlapSphere(transform.localPosition, v_KineticShockwaveRadius);
                for(int objectHitIndex = 0; objectHitIndex > v_ObjectsHit.Length; objectHitIndex++) {
                    CS_DamageModule v_ShockWaveHitDamageModule = v_ObjectsHit[objectHitIndex].gameObject.GetComponent<CS_DamageModule>();
                if(v_ShockWaveHitDamageModule != null) { v_ShockWaveHitDamageModule.ApplyKineticDamage(v_KineticDamage); }
                }// END - Kinetic shockwave for loop.
        }

        // Apply Explosion (Instantiate).
        if (v_ApplyExplosion == true) { CreateStandardExplosion(); }

        // Apply Plasma Damage (Instantiate).
        if (v_ApplyPlasma) { CreatePlasmaExplosion(); }

        Destroy(gameObject);
    } // END - On collision Enter.