2016-11-12 190 views
0

我正在編寫遊戲,並且希望我的背景重複自己一遍又一遍。水平平鋪背景

這是我使用

xOffset = (int) (camera.getX() % WIDTH); 

g.drawImage(bgInv, xOffset - WIDTH, 0, WIDTH, HEIGHT, null); 
g.translate(xOffset, 0); 
g.drawImage(bg, 0, 0, WIDTH, HEIGHT, null); 
g.translate(-xOffset, 0); 
g.drawImage(bgInv, xOffset + WIDTH, 0, WIDTH, HEIGHT, null); 

第一個drawImage方法繪製圖像時相機X爲負 第三,當相機的X爲正的代碼。

  • BG是正常的背景
  • bgInv是倒

問題的背景是,當我移動和X偏移從寬度變爲0,它給出的效果「傳送」

Click here to see

的控制檯輸出X偏移

我知道那是因爲我使用模獲得X偏移,但我沒有想出一個更好的辦法...

在此先感謝

+1

負數的模給出負數。嘗試'if(xOffset <0)xOffset + = WIDTH;'作爲第二行。 – Marco13

+0

@ Marco13 xOffsets永遠不會消極,但也試圖使用你的聲明,也改變它雖然,但不工作仍然 – L3n

+0

也許這篇文章將有助於:http://stackoverflow.com/questions/16138363/infinite-background遊戲/ 16138735#16138735 – camickr

回答

1

如果我理解正確,你想要重複的是2 * WIDTHHEIGHT圖像,其中左半部分是背景圖像,右半部分是水平倒置的相同圖像。

那麼你可以做的是:

xOffset = (int) (camera.getX() % (2 * WIDTH)); 

// draw the background image at x = xOffset - 2 * WIDTH 
g.drawImage(bg, xOffset - 2 * WIDTH, 0, WIDTH, HEIGHT, null); 
g.drawImage(bgInv, xOffset - WIDTH, 0, WIDTH, HEIGHT, null); 

// draw the background image at x = xOffset 
g.drawImage(bg, xOffset, 0, WIDTH, HEIGHT, null); 
g.drawImage(bgInv, xOffset + WIDTH, 0, WIDTH, HEIGHT, null); 
+0

這正是我需要的感謝! – L3n