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 是背景反转

问题是,当我移动并且xOffset从 0 变为WIDTH0 时,似乎有一个“包裹”。

点击这里查看

控制台正在输出xOffset

我知道这是因为我使用模数来获取xOffset但我没有找到更好的方法......

提前致谢

4

1 回答 1

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);
于 2016-11-16T19:54:58.957 回答