我在安卓工作室做游戏。现在我的游戏已经完成了,但是在大屏幕上游戏的速度是不同的。。。
我用这个计时器运行游戏:
if(timer == null){
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
if (start_flg) {
handler.post(new Runnable() {
@Override
public void run() {
changePos();
}
});
}
}
}, 0, 20);
}
changepos()如下所示:
public void changePos() {
SPEED_BOX =(screenHeight/280);
long time = System.nanoTime();
double delta_time = (double) ((time - last_time) / 1000000)/10;
last_time = time;
// Move Box
if (action_flg) {
// Touching
boxY += SPEED_BOX*delta_time;
box.setImageDrawable(imageBox1);
} else {
// Releasing
boxY -= SPEED_BOX*delta_time;
box.setImageDrawable(imageBox2);
}
// Check box position.
if (boxY < 0) {
boxY = 0;
box.setImageDrawable(imageBox1);
}
if (frameWidth - boxSize < boxY) {
boxY = frameWidth - boxSize;
box.setImageDrawable(imageBox2);
}
box.setY(boxY);
}
我的deltatime总是在1.5到2.9之间?
但每次我尝试不同的方式总是游戏速度是不正确的。有没有可能让我的游戏在不同的设备上运行相同的速度,不同的屏幕尺寸?
1条答案
按热度按时间ffx8fchx1#
问题是
screenHeight
屏幕高度以像素为单位,但游戏不使用整个屏幕。这导致不同设备上的速度不同。所以屏幕高度应该改为gamesLayout.getHeight()
.