У меня есть игра для Android, в которой шар движется на основе акселерометра. Мяч движется с переменной скоростью. В игре уровни намного больше экрана смартфона, поэтому я перевожу холст, когда мяч приближается к краю экрана, чтобы вместить большие уровни. Прокрутка работает, проблема заключается в плавной прокрутке в зависимости от мяча.
Вот попытка, которая меняется в зависимости от изменения положения мяча между обновлениями:
<code>
// 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 прокрутка становится все более плавной.
Есть предложения? Спасибо.