public State Update(float deltaTime) { time += deltaTime; if (input.IsForwardButtonDown()) { var distance = Speed * deltaTime; totalDistance += distance; player.Forward(distance); // 適当に進んだらゴールってことにする if (player.Position > 25) { return(State.Goal); } // ちょっと進んだら適当にIdleかJumpにしとく if (totalDistance > 10) { var random = new Random().Next(0, 100); return(random > 50 ? State.Idle : State.Jump); } } // 適当に時間経過でIdleに戻しちゃう return(time > 10 ? State.Idle : State.Walk); }