// === コード(Monobehaviour基本機能の実装) ================ void FixedUpdate() { var activeEnemyMainList = new List <EnemyMain>(); // カメラに写っている敵を検索 GameObject[] enemyList = GameObject.FindGameObjectsWithTag("Enemy"); if (enemyList == null) { return; } foreach (GameObject enemy in enemyList) { //Debug.Log (string.Format(">>> obj Name {0} position {1}",enemy.name,enemy.transform.position)); EnemyMain enemyMain = enemy.GetComponent <EnemyMain> (); if (enemyMain != null) { if (enemyMain.combatAIOerder && enemyMain.cameraEnabled) { activeEnemyMainList.Add(enemyMain); } } else { Debug.LogWarning(string.Format("CombatAI : EnemyMain null : {0} {1}", enemy.name, enemy.transform.position)); } } // 攻撃する敵を抑制 int i = 0; foreach (EnemyMain enemyMain in activeEnemyMainList) { if (i < freeAIMax) { // そのまま自由に行動させる } else if (i < freeAIMax + blockAttackAIMax) { // 攻撃を抑制する if (enemyMain.aiState == ENEMYAISTS.RUNTOPLAYER) { enemyMain.SetCombatAIState(ENEMYAISTS.WAIT); } } else { // 行動を停止する if (enemyMain.aiState != ENEMYAISTS.WAIT) { enemyMain.SetCombatAIState(ENEMYAISTS.WAIT); } } i++; } //Debug.Log(string.Format(">>> Combat AI {0}",i)); }
void FixedUpdate() { var activeEnemyMainList = new List <EnemyMain>(); // ค้นหา enemy ที่อยู่หน้ากล้อง (มองเห็น) แล้วบันทึกลงใน enemyList GameObject[] enemyList = GameObject.FindGameObjectsWithTag("Enemy"); if (enemyList == null) { return; } foreach (GameObject enemy in enemyList) { EnemyMain enemyMain = enemy.GetComponent <EnemyMain> (); if (enemyMain != null) { if (enemyMain.combatAIOerder && enemyMain.cameraEnabled) { activeEnemyMainList.Add(enemyMain); } } else { Debug.LogWarning(string.Format("CombatAI : EnemyMain null : {0} {1}", enemy.name, enemy.transform.position)); } } // คอนโทรล enemy แต่ละตัวที่กำลังโจมตีอยู่ int i = 0; foreach (EnemyMain enemyMain in activeEnemyMainList) { if (i < freeAIMax) { // ปล่อยไปตามโปรแกรม } else if (i < freeAIMax + blockAttackAIMax) { // กลุ่มนี้คุมหน่อย if (enemyMain.aiState == ENEMYAISTS.RUNTOPLAYER) { enemyMain.SetCombatAIState(ENEMYAISTS.WAIT); } } else { // ส่วนที่เหลือให้หยุดเลย if (enemyMain.aiState != ENEMYAISTS.WAIT) { enemyMain.SetCombatAIState(ENEMYAISTS.WAIT); } } i++; } //Debug.Log(string.Format(">>> Combat AI {0}",i)); }
void FixedUpdate() { // var? javascript? var activeEnemyMainList = new List <EnemyMain>(); GameObject[] enemyList = GameObject.FindGameObjectsWithTag("Enemy"); if (enemyList == null) { return; } foreach (GameObject enemy in enemyList) { EnemyMain enemyMain = enemy.GetComponent <EnemyMain>(); if (enemyMain != null) { if (enemyMain.combatAIOrder && enemyMain.cameraEnabled) { activeEnemyMainList.Add(enemyMain); } } else { } } //공격하는 적을 억제한다 int i = 0; foreach (EnemyMain enemyMain in activeEnemyMainList) { if (i < freeAIMax) { // 자유롭게 공격 } else if (i < freeAIMax + blockAttackAIMax) { if (enemyMain.aiState == ENEMYAISTS.RUNTOPLAYER) { enemyMain.SetCombatAIState(ENEMYAISTS.WAIT); } } else { if (enemyMain.aiState != ENEMYAISTS.WAIT) { enemyMain.SetCombatAIState(ENEMYAISTS.WAIT); } } i++; } }