使用坐标查找形状所属的节点
Find the node which a shape belongs to using cordinates
我目前怀疑是否可以使用坐标 (X,Y) 来查找所述坐标中是否有形状,如果有我会 get/find 坐标所在的节点属于?
如果你想找到给定位置的 PhysicsBody2D
s (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_2d
在 CanvasItem
中定义,因此可用于任何派生类型(Node2D
、Control
)。
我目前怀疑是否可以使用坐标 (X,Y) 来查找所述坐标中是否有形状,如果有我会 get/find 坐标所在的节点属于?
如果你想找到给定位置的 PhysicsBody2D
s (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_2d
在 CanvasItem
中定义,因此可用于任何派生类型(Node2D
、Control
)。