如何在 godot 中比较两个节点坐标



这可能是一件容易解决的事情,但我对 Godot 和 GDSCRIPT 很陌生,所以我不知道该怎么做,我找不到适合我的 2D 平台游戏的教程或任何内容。

我有一个带有 CollisionShape2d 的精灵,当玩家进入它的区域时会改变场景,我想让它将自己的位置与玩家的位置进行比较,如果碰撞发生时玩家的 x 坐标更高,则更改为前一个场景,如果没有,我使用一个简单的条件if position.x > player.position.x:但我收到错误"标识符"玩家"未声明在当前范围内",我不知道如何解决它。我试图对一个总是面对玩家的敌人做类似的事情,不用说我得到了同样的错误。

以下是整个脚本:

extends Sprite
func _on_hitbox_area_entered(area: Area2D) -> void:
if area.is_in_group("shield"): 
if position.x > player.position.x:
get_tree().change_scene("res://Levels/world_" + str(int(get_tree().current_scene.name) + 1) + ".tscn")
else:
get_tree().change_scene("res://Levels/world_" + str(int(get_tree().current_scene.name) - 1) + ".tscn")

也许还有另一种方法可以做到这一点,但是当我搜索解决方案时,我发现了不相关的东西,我不知道还能做什么

解决方案是将播放器替换为 area,以便代码如下所示:

extends Sprite
func _on_hitbox_area_entered(area: Area2D) -> void:
if area.is_in_group("shield"): 
if position.x > area.position.x:
get_tree().change_scene("res://Levels/world_" + str(int(get_tree().current_scene.name) + 1) + ".tscn")
else:
get_tree().change_scene("res://Levels/world_" + str(int(get_tree().current_scene.name) - 1) + ".tscn")

最新更新