如何实现2D视差滚动?


Answers:


20

将每个图层的位置除以您希望其与相机的“距离”。

例如:创建几个变量来表示摄像机的位置,cameraX然后cameraY。将它们设置为与角色的位置相等,可能会在移动方向上增加一些额外的影响。

主层将位于

mainLayer.x = -cameraX;

中间层像

middleLayer.x = -cameraX * 0.5;

和远层在

farLayer.x = -cameraX * 0.2;

根据需要更改常数。


3
Iain所说的话,加上“视差因子”(在Iain的代码中分别为1、0.5和0.2),并使其成为描述图层的参数,这样我就可以调整视差的细微程度(或在运行时)。
Troy Gilbert

6

基本上,您希望物体与“相机”越近移动得越快。如何实现取决于您自己。

我为每个图层分配一个深度,然后在滚动场景时,对于每个图层,我将滚动除以图层的深度,以使较远的图层移动得更慢。


5

“更向后”的图层需要以前景图层速度的一部分滚动。速度的一半意味着距离增加了一倍。其他效果(例如模拟雾的着色等)也可能会增加幻觉。


1

最好的方法是将精灵简单地渲染为3D中的广告牌四边形。“游戏性”可以全部发生在一个平面上,而背景和前景可以在3d空间中定位得更近或更远。这样,就可以为您处理视差效果,而无需执行任何特殊的编码:-)


3
如果这样做,则必须放大远方四边形以补偿距离缩放,或者设置不应用任何透视图的投影矩阵。自己翻译四边形可能会更容易。
优厚

0

通过减去其位置来使底层滚动,按常规绘制中间层,并使顶层以底层除以2的速度滚动。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.