protected override void AIUpdate_detect()
    {
        base.AIUpdate_detect();
        ResetRandFiexed();
        float rand = GetAIRandomNumver();

        switch (aiState)
        {
        case AISTATE.AISELECT:
            if (rand < aiStateNum_walk)
            {
                SetAIState(AISTATE.APPROACH_WALK, 5.0f);
            }
            else if (rand < AiStateNum_dash)
            {
                SetAIState(AISTATE.APPROACH_DASH, 5.0f);
            }
            else if (rand < AiStateNum_attack)
            {
                SetAIState(AISTATE.ATTACK, 20.0f);
            }
            else if (rand < AiStateNum_escape)
            {
                SetAIState(AISTATE.ESCAPE_DASH, 4.0f);
            }
            else
            {
                SetAIState(AISTATE.WAIT, 3.0f);
                animator.SetTrigger("rest");
            }
            break;

        case AISTATE.APPROACH_WALK:
            if (EnemyCtrl.MoveToPlayer_X(10.0f, EnemyCtrl.MoveSpeed * 0.5f))
            {
                SetAIState(AISTATE.ATTACK, 4.0f);
            }
            break;

        case AISTATE.APPROACH_DASH:
            if (EnemyCtrl.MoveToPlayer_X(10.0f, EnemyCtrl.MoveSpeed))
            {
                SetAIState(AISTATE.ATTACK, 4.0f);
            }
            break;

        case AISTATE.ESCAPE_DASH:
            if (EnemyCtrl.EscapeToPlayer_X(60.0f, EnemyCtrl.MoveSpeed))
            {
                SetAIState(AISTATE.WAIT, 3.0f);
            }
            break;

        case AISTATE.ATTACK:
            break;

        case AISTATE.WAIT:
            break;
        }
    }