没有重复的视差滚动 |游戏

parallax scroll without repeat | Game

我有 5 张长 5000 高 1800 的图片,我需要在 x 和 y 坐标上实现滚动。

另一方面,即使它是视差,它也不应该重复,这意味着最右边的世界是最右边的层,最顶层的世界是最顶层的层等等等。我该如何继续为它创建一个公式...出于某种原因我无法理解它...

我正在考虑为背景做不同的尺寸,然后相应地设置它们的位置(将相机的 x 除以整个世界宽度并乘以图层的宽度)但是所有图层都具有相同的尺寸。是否可以在保持相同大小的同时做某事,或者我别无选择,需要重新调整大小并应用我的想法?

当您使用视差滚动时,您的图像应该具有不同的宽度,具体取决于相关对象的距离。近处物体的图像较宽,远处物体的图像较窄。你正在做这样的事情:

滚动时,您会更改条带的水平位置(橙色)并将它们剪辑到视口(红色)。当您一直滚动到左侧时,所有条带都左对齐。当您向右滚动时,所有条带都右对齐。

当您的视口宽度为 W 且滚动位置 x 介于 0(最左侧)和 1(最右侧)之间,并且您想要放置一条宽度为 w,该条带的新左坐标 x0 是:

x0 = -(w - W) * x;

坐标相对于视口为负,因为您通过将元素推出视口向左滚动来进行滚动。

当然,您可以尝试用相机位置等方式来表达滚动,但视差滚动是关于深度的错觉,而不是关于透视的正确表示。