我正在制作一款画布游戏,您可以在其中乘坐宇宙飞船穿越无尽的重复背景。现在,我正在根据玩家的 x/y 位置在不同位置绘制四个背景实例,因此它们将与玩家一起移动。
ctx.translate(ax,ay);
ctx.drawImage(Ibg,Math.round(x/1080)*1080,Math.round(y/720)*720,1080,720);
ctx.drawImage(Ibg,(Math.round(x/1080)*1080)-1080,Math.round(y/720)*720,1080,720);
ctx.drawImage(Ibg,Math.round(x/1080)*1080,(Math.round(y/720)*720)-720,1080,720);
ctx.drawImage(Ibg,(Math.round(x/1080)*1080)-1080,(Math.round(y/720)*720)-720,1080,720);
转换为 ax 和 ay 基本上允许对象随着玩家移动的相机滚动,因为 ax 和 ay 是相对于玩家的位置的。我可以通过这样做来创建视差效果:
ctx.translate(ax*.5,ay*.5);
这使得背景滚动比其他游戏对象慢,就像我想要的那样。但是我还没有想出如何调整其余的代码来弥补。随着玩家离 (0,0) 越来越远,他看到的背景越来越少,因为它似乎以更快的速度超越了他。我怎样才能解决这个问题?