Android游戏 - 不同手机上的雪碧速度似乎有所不同

时间:2012-08-21 11:05:43

标签: android performance sprite

我正在使用surfaceView开发一款安卓游戏。当我在不同设备上测试游戏时,与其他设备相比,某些设备上的playerSprite似乎更快。 在以编程方式设置播放器速度时,我如何适应不同的设备?

if(MainActivity.slowSpeed == true){

             speedX = (float) (canvasWidth/266);

             speedY = (float)(canvasHeight/150);




         }




         if(MainActivity.fastSpeed == true){

             speedX = (float) (canvasWidth/192);

             speedY =(float) (canvasHeight/108);



         }

2 个答案:

答案 0 :(得分:0)

我只会测量onDraw次来电之间的时间,如果时间太短,请等待。

while( t1 - t0 < MINIMUM_FRAME_TIME ){
    // you could put a short wait(#) here if you wanted.
    t1 = System.currentTimeMillis();
}
t0 = t1;

t0,t1和MINIMUM_FRAME_TIME是长值。

答案 1 :(得分:0)

当帧速率不稳定时(例如每秒30或60帧),您应该根据您实际帧率计算的因子补偿游戏中的每个移动元素。

 achievedFramerate = 34.0f;    //The framerate you dynamically measure
 baseFramerate = 30.0f;        //The framerate at which your game is meant to be played
 framerateAdjustFactor = baseFramerate / achievedFramerate;

你可以在游戏中的某个地方使用它:

 playerX += speedX * framerateAdjustFactor;

所以在某些地方移动的地方,你可以通过这个因素补偿运动。这种方式在一台能够达到每秒60帧的机器上,每帧的速度只会移动两倍,这样游戏就会以完全相同的速度移动。

确保帧速率计算在每个帧都完成,并且必须以足够的精度完成。