加速度計に基づいてボールが動く Android ゲームがあります。ボールは可変速度で移動します。ゲームのレベルはスマートフォンの画面よりもはるかに大きいため、ボールが画面の端に近づくとキャンバスを移動して、大きなレベルに合わせます。スクロールは動作しますが、問題はボールに基づいてスムーズにスクロールすることです。
更新間のボールの位置の変化に基づいてシフトする試みを次に示します。
// RIGHT SHIFT
shiftFactor = Math.abs(xCoor - prevXCoor);
if (ball.x + translateX > rightX * 0.8
&& rightX < 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 が大きいほど、スクロールは段階的に途切れ途切れになります。
助言がありますか?ありがとう。