public void NextDecision()
    {
        if (state == BallBotState.End)
        {
            return;
        }

        switch (state)
        {
        case BallBotState.Start:
            DoIdle(2.0f);
            break;

        case BallBotState.Idle:
            if (Random.Range(0, 2) == 0)
            {
                state = BallBotState.Shooting;
                ShootRandom();
            }
            else
            {
                state       = BallBotState.Volley;
                volleyCount = volleyTotal - 1;
                ShootRandom();
            }
            break;

        case BallBotState.Shooting:
            DoIdle(idleLength);
            break;

        case BallBotState.Volley:
            if (volleyCount == 0)
            {
                shotSpeed = 1.0f;
                DoIdle(idleLength);
            }
            else
            {
                shotSpeed = 3.0f;
                ShootRandom();
            }
            volleyCount--;
            break;
        }
    }
 void DoIdle(float idle)
 {
     state = BallBotState.Idle;
     motor.DoIdle(idle);
 }