如何在不影响播放器力矩的情况下向视差图层添加运动?例如背景中的云

时间:2018-11-14 12:09:23

标签: parallax godot gdscript

我正在研究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))

this is image for reference

1 个答案:

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