Godot 3.5:Camera2D影响下的恒定水平视差背景问题求助
解决Godot 3.5.3视差背景与相机跟随冲突的问题
核心问题原因
ParallaxBackground默认会绑定场景中的Camera2D,自动根据相机位置调整滚动偏移。当相机跟随玩家移动时,相机的位移会抵消你脚本中手动设置的滚动,导致背景“卡住”或随玩家移动。
具体解决方案
步骤1:解除ParallaxBackground与相机的绑定
选中你的ParallaxBackground节点,在检查器面板中找到Follow Camera属性,点击右侧的清除按钮(叉号),将其设置为null。这样背景就不会再受相机位置的影响,完全由你的脚本控制滚动。
步骤2:调整滚动脚本(可选优化)
你现有的滚动逻辑是有效的,可优化为更灵活的写法,方便在编辑器中调整参数:
extends ParallaxBackground export var scroll_speed: float = 40.0 # 可在检查器面板直接修改滚动速度 func _process(delta: float) -> void: scroll_offset.x += scroll_speed * delta # 可选:若使用循环纹理,添加偏移重置避免数值过大 # 替换1920为你背景纹理的实际宽度 if scroll_offset.x > 1920: scroll_offset.x -= 1920
步骤3:保持Camera2D的跟随设置
你的Camera2D无需修改,继续让它追踪玩家即可。此时背景会独立于相机持续滚动,相机则专注聚焦玩家,两者互不干扰。
额外注意事项
- 若背景包含多个ParallaxLayer,无需为每个图层单独写脚本,控制父节点ParallaxBackground的scroll_offset即可,子图层会根据各自的Motion Scale属性自动产生层级视差效果。
- 如果背景纹理不是无缝循环的,需提前准备拼接纹理或在滚动到边界时切换纹理,避免出现空白区域。
内容的提问来源于stack exchange,提问作者YoungFlakeSIr
相关产品推荐
相关产品推荐

