我正在为游戏编写代码,并希望背景能够重复。
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 是反转的背景
问题是,当我移动并且 xOffset
从 WIDTH
变为 0 时,似乎存在“环绕”。
控制台正在输出xOffset
我知道这是因为我使用模数来获取xOffset
,但我没有找到更好的方法...
提前致谢
最佳答案
如果我理解正确的话,您想要重复的是 2 * WIDTH
by 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);
关于java - 水平平铺背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40568914/