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 回答