1
我想从距离特定方向“看”的另一个节点获取距最近节点(如果有一个)的距离。在特定方向上获取距离最近的SpriteKit节点
在图像中,“P”是玩家的节点,线是要看的方向。圆环是另一个节点,穿过方向线。
获得2个节点之间的距离是没有问题的,但我怎么访问正好穿越我行最近的节点?
我想从距离特定方向“看”的另一个节点获取距最近节点(如果有一个)的距离。在特定方向上获取距离最近的SpriteKit节点
在图像中,“P”是玩家的节点,线是要看的方向。圆环是另一个节点,穿过方向线。
获得2个节点之间的距离是没有问题的,但我怎么访问正好穿越我行最近的节点?
我假设你的精灵有一些半径,而crossing my line
表示从线条到精灵中心的距离小于半径。
让playur点为P,方向角是网络连接,所以单位方向矢量是
dx = cos(fi)
dy = sin(fi)
和线方程是
- x * dy + y * dx + q = 0
where
q = dy * p.x - dx * p.y
为了找到到该行从子画面中心的距离,替代X y与center.x和center.y
dist = - center.x * dy + center.y * dx + q
因此,通过精灵列表,检查sp仪式相交(dist < spriteRadius
)并选择最接近的相交精灵
创建一个SKShapeNode,它跟随'视线',然后使用'node intersects node'方法来查看线上有哪些节点? –
@SteveIves需要检查每个节点。 OP,查看射线测试或点击测试,因为这是你想要做的。除了使用物理世界来获得你想要做的事之外,我不知道任何事情。 – Knight0fDragon
@ Knight0fDragon如果你能想出一个粗略的例子,那么看到 – Fluidity