"自転車"リスト内のオブジェクトの1つがboolean isBoostingを含む場合、drawLine()を高速に実行しようとしています。リストに2つの自転車が含まれていて、その結果、いずれかの自転車がisBoostingのときに両方の自転車がスピードアップするように見える場合。なぜ誰かが考えを持っていますか?オブジェクトにisBoostingの値trueが含まれていない場合、スレッドの「移動」は遅くしてはいけませんか?異なるThread.sleep()の時間を使用してPlayerの速度を制御しますか?
foreach (LightBike b in bikes) //draw bikes
{
if (b.isBoosting && b.boostCounter > 0) //player is boosting
{
Thread.Sleep(GAME_SPEED - 5);
b.boostCounter--;
if (b.boostCounter == 0)
{
b.isBoosting = false;
b.boostCounter = 20;
}
}
else
{
Thread.Sleep(GAME_SPEED);
}
canvas.DrawLine(new Pen(b.color, BIKE_SIZE) { EndCap = System.Drawing.Drawing2D.LineCap.Square }, b.location, b.getNextLocation());
}
*遅延を制御しないでください:これは近似値であり、他の要因によって支配され、すべてに影響を与える可能性があります。 *各時間デルタ*の移動量を制御します(正確に一定ではなく、時間デルタが正しく処理されると変更できます)。この単純な形式の「タイム・デルタ移動」は、基本的なゲーム・チュートリアルに含まれています。 –
また、更新ロジックは描画ロジックとは別にする必要があります。描画は世界のオブジェクトの視覚的表現であり、ほとんどの場合独立している必要があります。 –