我对编程非常陌生,目前我正在尝试为Android制作一个简单的游戏。我遇到的问题是视图滚动的方式。根据我的逻辑,我相信精灵应该保持在屏幕的中心,但它并没有。该视图确实遵循精灵,但如果有意义则不会以相同的速度。就像在视图中落后一样。它没有跳跃,所以我知道它没有慢慢运转。令我惊讶的是,我将滚动矩形设置为等于玩家x位置 - 显示宽度,然后是y轴相同。因此,我希望你们可以帮助我的是弄清楚为什么精灵不会留在视图的中心。任何帮助将不胜感激。
感谢。
private static Rect displayRect = null; //rect we display to
private Rect scrollRect = null; //rect we scroll over our bitmap with
Display display = getWindowManager().getDefaultDisplay();
displayWidth = display.getWidth();
displayHeight = display.getHeight();
displayRect = new Rect(0, 0, displayWidth, displayHeight);
scrollRect = new Rect(0, 0, displayWidth, displayHeight);
//设置滚动矩形的新左上角
newScrollRectX = ((int)player.getXLocation() - (displayWidth/2));
newScrollRectY = ((int)player.getYLocation() - (displayHeight/2));
//这是我的onDraw方法,所以它在播放器播放之前更新
scrollRect.set(newScrollRectX, newScrollRectY,
newScrollRectX + displayWidth, newScrollRectY + displayHeight);
// bmLargeImage是1440X1440背景
canvas.drawBitmap(bmLargeImage, scrollRect, displayRect, paint);
canvas.drawBitmap(player.getBitmap(),(float)player.getX(player.getSpeedX()), (float)player.getY(player.getSpeedY()), null);
答案 0 :(得分:0)
我的第一个猜测是你正在使用整数计算,而应该使用浮点计算。
int test = 10 / 3; // == 3
float test2 = 10 / 3.0; // == 3.33333...
这可以解释'跳跃'。
请注意,我不确定所有Android手机是否都有FPUs。您可能必须使用fixed point calculations来保证正常的性能。