void Explode() { GameObject explode = Instantiate(explodeEffect, transform.position, transform.rotation); Destroy(explode, 2f); Collider[] colliderToDestroy = Physics.OverlapSphere(transform.position, radius); foreach (Collider nearBy in colliderToDestroy) { Target target = nearBy.GetComponent <Target>(); TargetEnemy enemyTarget = nearBy.GetComponent <TargetEnemy>(); if (enemyTarget != null) { enemyTarget.HitEnemy(damage); } if (target != null) { target.HitTarget(damage); } } Collider[] colliderToForce = Physics.OverlapSphere(transform.position, radius); foreach (Collider nearBy in colliderToForce) { Rigidbody rb = nearBy.GetComponent <Rigidbody>(); if (rb != null) { rb.AddExplosionForce(force, transform.position, radius); } } Destroy(gameObject); }
void Shoot() { // A simple fire animation using particals. gunSmoke.Play(); // Raycast for targeting purposes. RaycastHit rayHit; // Player Player forward Going out to range if (Physics.Raycast(transform.position, transform.forward, out rayHit)) { range = rayHit.distance; } { // Set up target. What the ray hit. Target target = rayHit.transform.GetComponent <Target>(); TargetEnemy enemyTarget = rayHit.transform.GetComponent <TargetEnemy>(); TargetBase baseTarget = rayHit.transform.GetComponent <TargetBase>(); TargetTank tankTarget = rayHit.transform.GetComponent <TargetTank>(); //GameObject hitHere = Instantiate(hitEffect, transform.position + transform.forward * range, Quaternion.LookRotation(rayHit.point)); GameObject hitHere = Instantiate(hitEffect, rayHit.point, Quaternion.LookRotation(rayHit.normal)); Destroy(hitHere, 0.5f); Debug.DrawLine(transform.position, transform.position + transform.forward * range, Color.red); // Show me what the ray hit. // Debug.Log(rayHit.transform.name); if (enemyTarget != null) { // Target takes damage. enemyTarget.HitEnemy(damage); } // Only if targe is not zero, a valid targe is in range. if (target != null) { // Target takes damage. target.HitTarget(damage); } if (baseTarget != null) { baseTarget.HitBase(damage); } if (tankTarget != null) { tankTarget.HitBase(damage); } } }