Godot 视差 parallax

4.5.1 2025-10-15

所谓视差就是近大远小,近快远慢。

Parallax2D 可以实现模拟远近多层背景近景移动效果。(注:Parallax2D 新增于 4.3 版本,用于替换之前的 ParallaxBackground 结合 ParallaxLayer。)

这里设置了五层视差图层,每个图层外部是 Parallax2D,下面放一个可以设置图片的节点,比如 Sprite2D

  • 天空背景
  • 远山
  • 近山
  • 远方森林
  • 近距离树木

为每个 Parallax2D 设置不同的移动速度,Scroll Scalex 表示横向滚动倍数,比如“天空背景”最远,滚动倍数 0.1,“近距离树木”最近,滚动倍数 2.0

然后,要给每个 Parallax2D 设置重复大小 (Repeat Size),通常要设置成内部图像的大小,这样就可以在模拟成图片无限滚动的效果,给人一种图片无限大的效果。

最后控制背景自动滚动,还是基于相机的移动进行滚动。如果需要自动滚动,可以设置 Auto Scroll,注意要为不同的图层设置不同的自动滚动速度,比如最远的“天空背景”是 20,最近的“近距离树木”是 100。

修改相机位置,也会影响同一个 viewport 内视差图层的移动。

if Input.is_action_pressed("ui_left"): camera.position.x -= 100 * delta
if Input.is_action_pressed("ui_right"): camera.position.x += 100 * delta
          

如果不希望相机影响视差背景,可以把 ignore_camera_scroll 设置为 true