// Update is called once per frame void Update() { if (Time.time > lastSpawnTime + spawnCoolDown) { int numberOfEnnemies = Random.Range(numberOfENnemiesRange.x, numberOfENnemiesRange.y + 1); for (int i = 0; i < numberOfEnnemies; i++) { Vector3 proportionalSpawnPos = new Vector3(Random.Range(0, 2), 0f, Random.Range(0f, 1f)) * 2f - Vector3.one; if (Random.Range(0, 2) == 0) { proportionalSpawnPos = new Vector3(proportionalSpawnPos.z, proportionalSpawnPos.y, proportionalSpawnPos.x); } AttackerFactory.Create(transform.position + Vector3.Scale(proportionalSpawnPos, SpawnExtent), Quaternion.identity); } spawnCoolDown = Mathf.Lerp(spawnCoolDownRange.y, spawnCoolDownRange.x, (Time.time - startTime) / timeToReachMaxDifficulty); lastSpawnTime = Time.time; } }
public void TakeDamage(int damage) { health -= damage; if (health <= 0) { if (deathFX != null) { ParticleSystem fxObject = Instantiate(deathFX, transform.position, Quaternion.Euler(-90, 0, 0)); Destroy(fxObject.gameObject, 2f); } CameraShaker.Shake(0.5f); //TODO: make betterFactory to prepare for different types of ennemies and to not have to use this unelegant bool if (isEnnemy) { Score.AddScore(1); AttackerFactory.Restock(GetComponent <AttackerAI>()); } else { Destroy(gameObject); } } }
private void Awake() { instance = this; }