Example #1
0
    // 歩く
    void WalkUpdate()
    {
        // 生きているか
        if (!CheckMyLife())
        {
            NowState = AIState.DEAD;
            return;
        }

        // 一定間隔で変身するようにする
        m_nowTransInterval += Time.deltaTime;
        if (m_nowTransInterval > m_transInterval)
        {
            // 変身させる
            if (S_Atrans.TransChange())
            {
                m_nowTransInterval = 0f;
            }
        }

        // 一定間隔で移動方向を設定
        m_nowMoveTime += Time.deltaTime;
        if (m_nowMoveTime >= m_searchMoveVecInterval)
        {
            m_moveVec     = S_Amove.SearchMovevec(m_route[m_routeIndex]);
            m_nowMoveTime = 0f;
        }

        // 敵が見えているか
        if (FindEnemyFlag)         // 敵を見つけているか
        {
            if (m_enemyChaseFlag)  // 敵を追いかけているか
            {
                if (!FightEnemy()) // 敵を見失っていないか
                {
                    NowState = AIState.WALKSTART;
                    return;
                }
            }
            S_Agun.SelectBullet(m_fightingEnemy.position);
        }
        else
        {
            if (CheckFindEnemy())
            {
                NowState = AIState.WALKSTART;
                return;
            }
        }

        // 目的地にたどり着いたか
        if (CheckWayPoint() && checkpointgoalFlag)
        {
            NowState = AIState.WALKGOAL;
            return;
        }
        if (checkpointgoalFlag)
        {
            NowState = AIState.WALKGOAL;
            return;
        }
    }