private void SpawnEnemy() { GameObject currentEnemy = Instantiate(plc.enemyPrefab, transform.position, Quaternion.identity); EnemyInitializer ei = currentEnemy.GetComponent <EnemyInitializer>(); ei.enemyType = waveEnemies[0]; ei.plc = plc; ei.Initialize(); waveEnemies.RemoveAt(0); if (waveEnemies.Count == 0) { CancelInvoke(); } currentlyAliveEnemies.Add(currentEnemy); }
void OnCollisionEnter(Collision col) { if (col.gameObject.CompareTag("Enemy")) { EnemyInitializer ei = col.gameObject.GetComponent <EnemyInitializer>(); if (ei.health - damage <= 0) { Destroy(col.gameObject); } else { ei.health -= damage; } Destroy(gameObject); } }
// Update is called once per frame void Update() { foreach (GameObject enemy in plc.spawner.currentlyAliveEnemies) { if (Vector3.Distance(transform.position, enemy.transform.position) <= range) { EnemyInitializer ei = enemy.GetComponent <EnemyInitializer>(); if (ei.health - (damagePerSecond * Time.deltaTime) <= 0) { Destroy(enemy); } else { ei.health -= (damagePerSecond * Time.deltaTime); bool check = false; foreach (Transform child in enemy.transform) { if (child.gameObject.CompareTag("Shocked")) { check = true; } } if (!check) { Instantiate(shockEffect, enemy.transform); } } } else { bool check = false; GameObject toRemove = null; foreach (Transform child in enemy.transform) { if (child.gameObject.CompareTag("Shocked")) { check = true; toRemove = child.gameObject; } } if (check) { Destroy(toRemove); } } } }
// Update is called once per frame void Update() { if (!locked) { foreach (GameObject enemy in plc.spawner.currentlyAliveEnemies) { if (Vector3.Distance(transform.position, enemy.transform.position) <= range) { currentEnemy = enemy; locked = true; ei = currentEnemy.GetComponent <EnemyInitializer>(); } } } else { if (currentEnemy != null) { if (Vector3.Distance(transform.position, currentEnemy.transform.position) <= range) { lr.SetPosition(1, currentEnemy.transform.position); if (ei.health - (damagePerSecond * Time.deltaTime) > 0) { ei.health -= (damagePerSecond * Time.deltaTime); } else { Destroy(currentEnemy); lr.SetPosition(1, top.transform.position); } } else { lr.SetPosition(1, top.transform.position); locked = false; } } else { lr.SetPosition(1, top.transform.position); locked = false; } } }