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

How to compare two node coordinates in godot

这可能是一件容易解决的事情,但我对 godot 和 gdscript 还很陌生,所以我不知道该怎么做,也找不到适用于我的 2D 平台游戏的教程或任何东西。

我有一个带有 CollisionShape2d 的 Sprite,它会在玩家进入它的区域时改变场景,我想让它比较自己的位置与玩家的位置,如果玩家的 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")

也许还有另一种方法,但是当我寻找解决方案时,我发现了不相关的东西,我不知道还能做什么

这个问题的解决方案是用区域替换播放器,这样代码将如下所示:

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")