void Explode() { // Show effect GameObject explosion = Instantiate(explosionEffect, transform.position, transform.rotation); Collider[] colliders = Physics.OverlapSphere(transform.position, radius); foreach (Collider nearbyObject in colliders) { Rigidbody rb = nearbyObject.GetComponent <Rigidbody>(); if (rb != null) { rb.AddExplosionForce(force, transform.position, radius, upforce, ForceMode.Impulse); } EnemyTarget nearbyTarget = nearbyObject.transform.root.gameObject.GetComponent <EnemyTarget>(); if (nearbyTarget != null) { float proximity = (transform.position - nearbyTarget.transform.position).magnitude; int explosiveEffect = 1 - (int)(proximity / radius); nearbyTarget.TakeDamage(explosiveEffect * 7); } } // Remove grenade Destroy(gameObject); Destroy(explosion, 2.5f); }
void hitDamage(Transform enemy) { EnemyTarget e = enemy.GetComponent <EnemyTarget>(); if (e != null) { e.TakeDamage(damage); } //Destroy(enemy.gameObject); }
void Shoot() { muzzleFlash.Play(); RaycastHit hit; if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range)) { EnemyTarget target = hit.transform.root.gameObject.GetComponent <EnemyTarget>(); if (target != null) { switch (hit.transform.name) { case "Head": target.TakeDamage(damage * 5); break; case "Spine2": target.TakeDamage(damage * 2); break; case "LeftUpLeg": target.TakeDamage(damage); break; case "LeftLeg": target.TakeDamage(damage); break; case "RightUpLeg": target.TakeDamage(damage); break; case "RightLeg": target.TakeDamage(damage); break; case "LeftArm": target.TakeDamage(damage + 5); break; case "LeftForeArm": target.TakeDamage(damage - 5); break; case "RightArm": target.TakeDamage(damage + 5); break; case "RightForeArm": target.TakeDamage(damage - 5); break; default: target.TakeDamage(damage); break; } } } }