void Explode() { 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); } Destructible ds = nearbyObject.GetComponent <Destructible>(); if (ds != null && (Random.Range(1, 100) < 40)) { ds.Break(); } PlayerHealth ph = nearbyObject.GetComponent <PlayerHealth>(); if (ph != null) { ph.TakeDamage(20); } SC_NPCEnemy eh = nearbyObject.GetComponent <SC_NPCEnemy>(); if (eh != null) { eh.ApplyDamage(100); } } foreach (GameObject gmObj in particleSystems) { Instantiate(gmObj, gameObject.transform.position, gameObject.transform.rotation); Destroy(gmObj, 5); } }
void Shot() { muzzleFlash.Play(); GameObject cartrige = Instantiate(cartrigePrefab, cartrigeEjector.position, cartrigeEjector.rotation); Destroy(cartrige, 2f); Rigidbody rb = cartrige.GetComponent <Rigidbody>(); rb.AddForce(cartrigeEjector.right * (cartrigeForce + Random.Range(0, 0.2f)), ForceMode.Impulse); rb.AddTorque(Random.Range(-15, 15), Random.Range(-15, 15), 0, ForceMode.Impulse); Shoot.pitch = Random.Range(1.3f, 1.5f); Shoot.Play(); RaycastHit hit; if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range)) { Destructible target = hit.transform.GetComponent <Destructible>(); PlayerHealth targetPlayer = hit.transform.GetComponent <PlayerHealth>(); //Optimize****************************************************** SC_NPCEnemy targetEnemy = hit.transform.GetComponent <SC_NPCEnemy>(); ButtonScript button = hit.transform.GetComponent <ButtonScript>(); if (target != null) { target.TakeDamage(damage); } if (targetPlayer != null) { targetPlayer.TakeDamage(damage); } if (targetEnemy != null) { targetEnemy.ApplyDamage(damage); } if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } if (button != null) { button.ClickButton(); } Instantiate(impactEffect1, hit.point, Quaternion.LookRotation(hit.normal)); Instantiate(impactEffect2, hit.point, Quaternion.LookRotation(hit.normal)); Instantiate(impactEffect3, hit.point, Quaternion.LookRotation(hit.normal)); GameObject bulletHole = Instantiate(bulletHolePrefab, hit.point, Quaternion.LookRotation(hit.normal)); bulletHole.transform.parent = hit.transform; Collider[] colliders = Physics.OverlapSphere(hit.point, radius); foreach (Collider nearbyObject in colliders) { Rigidbody rd = nearbyObject.GetComponent <Rigidbody>(); if (rd != null) { rd.AddExplosionForce(force, hit.point, radius); } } } }
// Update is called once per frame void Update() { if (startingGame) { if (waitingForWave) { if (newWaveTimer >= 0) { newWaveTimer -= Time.deltaTime; } else { WaveStart.Play(0); //Initialize new wave enemiesToEliminate = waveNumber * enemiesPerWave; enemiesEliminated = 0; totalEnemiesSpawned = 0; waitingForWave = false; } } else { if (Time.time > nextSpawnTime) { nextSpawnTime = Time.time + spawnInterval; //Spawn enemy if (totalEnemiesSpawned < enemiesToEliminate) { Transform randomPoint = spawnPoints[Random.Range(0, spawnPoints.Length)]; GameObject enemy = Instantiate(enemyPrefab, randomPoint.position, Quaternion.identity); SC_NPCEnemy npc = enemy.GetComponent <SC_NPCEnemy>(); npc.playerTransform = player.transform; npc.es = this; totalEnemiesSpawned++; } } } } if (player.playerHP <= 0) { startingGame = false; gameOver = true; if (isDead == false) { GameAudio.Stop(); GameOverAudio.Play(); RestartBox.Show(); isDead = true; } if (Input.GetKeyDown(KeyCode.Space)) { restart(); } } }
public void EnemyEliminated(SC_NPCEnemy enemy) { enemiesEliminated++; if (enemiesToEliminate - enemiesEliminated <= 0) { //Start next wave newWaveTimer = 10; waitingForWave = true; waveNumber++; } }
// Update is called once per frame void Update() { if (waitingForWave) { if (newWaveTimer >= 0) { newWaveTimer -= Time.deltaTime; } else { //Initialize new wave enemiesToEliminate = waveNumber * enemiesPerWave; enemiesEliminated = 0; totalEnemiesSpawned = 0; waitingForWave = false; } } else { if (Time.time > nextSpawnTime) { nextSpawnTime = Time.time + spawnInterval; //Spawn enemy if (totalEnemiesSpawned < enemiesToEliminate) { Transform randomPoint = spawnPoints[Random.Range(0, spawnPoints.Length)]; GameObject enemy = Instantiate(enemyPrefab, randomPoint.position, Quaternion.identity); SC_NPCEnemy npc = enemy.GetComponent <SC_NPCEnemy>(); npc.playerTransform = player.transform; //npc.es = this; totalEnemiesSpawned++; } } } if (playerHealth.currentHealth <= 0) { if (Input.GetKeyDown(KeyCode.Space)) { Scene scene = SceneManager.GetActiveScene(); SceneManager.LoadScene(scene.name); } } }