} // END - Fixed Update. // DOES NOT INCLUDE INITIAL DAMAGE WHEN APPLYING PLASMA DAMAGE! void PlasmaDamageOverTime(){ Collider[] go_ObjectsHit = Physics.OverlapSphere(this.transform.position, v_PlasmaExplosionRadius); foreach (Collider objectIndex in go_ObjectsHit){ CS_DamageModule v_ObjectDamageModule = objectIndex.GetComponent<CS_DamageModule>(); if (v_ObjectDamageModule != null) { v_ObjectDamageModule.ApplyPlasmaDamage(0, v_PlasmaExplosionSubDamage * Time.deltaTime, (v_PlasmaExplosionEffectDuration * 0.1f) * Time.deltaTime); } } // END - ForEach loop. } // END - Explosion.
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.
// // Use this for initialization void Start() { if (go_ObjectHealthToUse == null) { go_ObjectHealthToUse = gameObject; } v_DamageModule = go_ObjectHealthToUse.GetComponent <CS_DamageModule>(); } // END - Start
// // Use this for initialization void Start() { // DEBUG ERROR: Inform if the script is placed incorrectly. if (go_ObjectHoldingEngine == gameObject) { Debug.LogError("BRIDGE PLACED ON OBJECT HOLDING MAIN SCRIPT! Move bridge to the gameobject representing the physical engine!"); } else { v_PhysicalEngineDamageModule = gameObject.GetComponent <CS_DamageModule>(); v_VehicleEngine = go_ObjectHoldingEngine.GetComponent <CS_VehicleEngine>(); } // END - If correct script placement is true. } // END - Start
} // END - Update. void Explosion(){ // Generate a sphere and collect all objects within it: Collider[] go_ObjectsHit = Physics.OverlapSphere(this.transform.position, v_ExplosionRadius); // Run for loop to recursively effect objects: foreach( Collider objectIndex in go_ObjectsHit) { CS_DamageModule v_ObjectDamageModule = objectIndex.GetComponent<CS_DamageModule>(); // Apply explosion force if rigidbody is not null: Rigidbody v_ObjectRigidbody = objectIndex.GetComponent<Rigidbody>(); if (v_ObjectRigidbody != null) { v_ObjectRigidbody.AddExplosionForce(v_ExplosionForce, transform.position, v_ExplosionRadius, 0, ForceMode.Impulse); } // Apply Explosion Damage: if(v_ObjectDamageModule != null && v_ExplosionDamage > 0) { v_ObjectDamageModule.ApplyExplosionDamage(v_ExplosionDamage); } } // END - ForEach loop. } // END - Explosion.
// END - Variables. // Use this for initialization void Start(){ v_ParticleEffect = GetComponent<ParticleSystem>(); if (!v_DestroyOnNoParticles) { Destroy(gameObject, v_Lifetime); } // If not using emitter life, use lifetime value. // Generate a sphere and collect all objects within it: Collider[] go_ObjectsHit = Physics.OverlapSphere(this.transform.position, v_PlasmaExplosionRadius); // Run for loop to recursively effect objects: foreach (Collider objectIndex in go_ObjectsHit){ // Apply Plasma Damage: CS_DamageModule v_ObjectDamageModule = objectIndex.GetComponent<CS_DamageModule>(); if (v_ObjectDamageModule != null) { v_ObjectDamageModule.ApplyPlasmaDamage(v_PlasmaExplosionDamage, v_PlasmaExplosionSubDamage, v_PlasmaExplosionEffectDuration); } } // END - ForEach loop. } // END - Start
} // 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.