我正在为一款游戏编码,希望我的背景一遍又一遍地重复。
这是我正在使用的代码
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为正时,第三个。
问题在于,当我移动并且 xOffset从WIDTH变为0 时,它会产生“远程传送”的效果。
控制台正在输出xOffset
我知道这是因为我使用modulo来获取xOffset但是我没有想出更好的方法...
提前致谢
答案 0 :(得分:1)
如果我理解正确,你要重复的是2 * WIDTH
到HEIGHT
图像,其中左半部分是背景图像,右半部分是水平反转的相同图像。
所以你可以做的是:
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);