Example #1
0
    // === コード(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));
    }
Example #2
0
    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));
    }
Example #3
0
    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++;
        }
    }