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.
} // 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.