我正在研究2D plaformer游戏,该游戏具有三个视差层(天空,山脉和云),天空和山层根据视差层的运动比例属性移动,并且我向云层添加了脚本,因此它可以不断移动即使在玩家闲置或不动时,它仍沿一个方向(即从右向左)移动。但是我遇到一个问题,即当玩家移动或跳跃时,云也会获得跳跃效果并一直跟随玩家。不管玩家的时刻如何,如何使云向一个方向移动? 我的云脚本:
extends ParallaxBackground
var dst = 0
func _ready():
set_process(true)
pass
func _process(delta):
dst -= 50 *delta
set_scroll_offset(Vector2(dst,0))
答案 0 :(得分:0)
我假设在这样的游戏中,您已经将相机连接到玩家,因此它可以跟随玩家的运动。您是否有可能使云成为相机或播放器的子代?据我了解,横向滚动游戏的视差背景是这样构成的:
Node2D
|_ParallaxBackground #Base background layer
| |_Sprite
| |_ParallaxLayer # Middle-back layer (moves at own speed - defined by you)
| | |_Sprite
| |_ParallaxLayer2 # Middle-Fore layer (moves at own speed - defined by you)
| | |_Sprite
| |_ParallaxLayer3 # Foreground layer (moves at own speed - defined by you)
| |_Sprite
|_KinematicBody2D #Player Physics/movement
|_CollisionShape2D #player collision
| |_Sprite #Player image
|_Camera2D #camera attached to player (follows player movement)
从该结构可以看到,视差层(及其运动)与播放器/相机分开。您应该能够分别控制所有视差层(包括云层)的速度,而不会受到播放器移动的影响。
我将是第一个被承认的人,我不是专家,因为我对Godot还是很陌生,尽管我对发动机的了解还不完全,但我只是试图提供有用的建议。话虽如此,请告诉我该解决方案是否对您有用,因为该知识将有助于巩固我对Godot的理解并提高我帮助他人的能力。