示例#1
0
 // 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;
     }
 }
示例#2
0
 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;
 }