0

加速度計に基づいてボールが動く Android ゲームがあります。ボールは可変速度で移動します。ゲームのレベルはスマートフォンの画面よりもはるかに大きいため、ボールが画面の端に近づくとキャンバスを移動して、大きなレベルに合わせます。スクロールは動作しますが、問題はボールに基づいてスムーズにスクロールすることです。

更新間のボールの位置の変化に基づいてシフトする試みを次に示します。


// RIGHT SHIFT
shiftFactor = Math.abs(xCoor - prevXCoor);
if (ball.x + translateX &gt rightX * 0.8
 && rightX &lt levelWidth + padding) {
    translateX -= shiftFactor;
    leftX += shiftFactor;
    rightX += shiftFactor;
} 
ぎこちなく見えます。

これは、いくつかの定数に基づいてシフトする試みです。


int shiftFactor=2;

//SHIFT SCREEN RIGHT
if (ball.x + translateX > RightPerimeter * 0.8 && rightPerimeter < levelWidth) {
  translateX -= shiftFactor;
  viewPortLeft += shiftFactor;
  viewPortRight += shiftFactor;
}

shiftFactor 値が低いと、スムーズにスクロールしますが、ボールがスクロールを簡単に「追い越す」可能性があります。shiftFactors が大きいほど、スクロールは段階的に途切れ途切れになります。

助言がありますか?ありがとう。

4

1 に答える 1

2

問題は、フレームレートが低すぎることです。私の経験では、Canvasはリアルタイムゲームを適切なフレームレートで実行するための設備が整っていません。OpenGLを使用したレンダリングに切り替えると、パフォーマンスが大幅に向上します。

于 2011-04-27T21:59:59.493 に答える