我有一个 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,滚动变得越来越不稳定。
有什么建议么?谢谢。