使用坐标查找形状所属的节点

Find the node which a shape belongs to using cordinates

我目前怀疑是否可以使用坐标 (X,Y) 来查找所述坐标中是否有形状,如果有我会 get/find 坐标所在的节点属于?

如果你想找到给定位置的 PhysicsBody2Ds (StaticBody2D, RigidBody2D, KinematicBody2D),你可以使用 RayCast2D 长度为 0,放在那个位置。

或者,您可以使用 Physics2DDirectSpaceState 以类似于 RayCast2D 在幕后执行的方式...

或者更好的是,使用 intersect_point:

var position:Vector2 = whatever_position_you_want_to_query()

var world:World2D = get_world_2d()
var space_state:Physics2DDirectSpaceState = world.direct_space_state
var collisions:Array = space_state.intersect_point(position)
for collision in collisions:
    var body:PhysicsBody2D = collision["collider"]
    print(body)

或更短(类型信息不太明确)的版本:

var position:Vector2 = whatever_position_you_want_to_query()

for collision in get_world_2d().direct_space_state.intersect_point(position):
    print(collision["collider"])

请注意,函数 get_world_2dCanvasItem 中定义,因此可用于任何派生类型(Node2DControl)。