1

我正在开发具有三个视差层(天空、山脉和云)天空和山脉层根据视差层的运动比例属性移动的 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))

这是图片供参考

4

1 回答 1

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 的理解并提高我帮助他人的能力。

于 2019-04-06T00:16:01.683 回答