コード例 #1
0
    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);
    }
コード例 #2
0
ファイル: Missile.cs プロジェクト: streaker03/Midterm
 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);
     }
 }
コード例 #3
0
 // 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);
             }
         }
     }
 }
コード例 #4
0
ファイル: LaserTurret.cs プロジェクト: streaker03/Midterm
 // 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;
         }
     }
 }