// Start is called before the first frame update void Start() { //Time.timeScale = 4; navMeshAgent = GetComponent <NavMeshAgent>(); tankShooting = GetComponent <TankShooting>(); tankHealth = GetComponent <TankHealthHardcoded>(); navMeshAgent.SetDestination(enemyAgent.transform.position); transform.position = startingPoints[Random.Range(0, startingPoints.Length)].position; tankHealth.Start(); alive = true; }
private void OnTriggerEnter(Collider other) { if (other.isTrigger) { return; } // Collect all the colliders in a sphere from the shell's current position to a radius of the explosion radius. Collider[] colliders = Physics.OverlapSphere(transform.position, m_ExplosionRadius, m_TankMask); // Go through all the colliders... for (int i = 0; i < colliders.Length; i++) { // ... and find their rigidbody. Rigidbody targetRigidbody = colliders[i].GetComponent <Rigidbody>(); // If they don't have a rigidbody, go on to the next collider. if (!targetRigidbody) { continue; } // Add an explosion force. //targetRigidbody.AddExplosionForce(m_ExplosionForce, transform.position, m_ExplosionRadius); // Find the TankHealth script associated with the rigidbody. TankHealth targetHealth = targetRigidbody.GetComponent <TankHealth>(); TankHealthHardcoded tankHealthHardcoded = targetRigidbody.GetComponent <TankHealthHardcoded>(); // If there is no TankHealth script attached to the gameobject, go on to the next collider. if (!targetHealth && !tankHealthHardcoded) { continue; } // Calculate the amount of damage the target should take based on it's distance from the shell. float damage = CalculateDamage(targetRigidbody.position); if (!targetHealth) { tankHealthHardcoded.TakeDamage(damage); } else { // Deal this damage to the tank. targetHealth.TakeDamage(damage); } } //// Unparent the particles from the shell. //m_ExplosionParticles.transform.parent = null; //// Play the particle system. //m_ExplosionParticles.Play(); //// Play the explosion sound effect. //m_ExplosionAudio.Play(); //// Once the particles have finished, destroy the gameobject they are on. //Destroy(m_ExplosionParticles.gameObject, m_ExplosionParticles.duration); // Destroy the shell. Destroy(gameObject); }