2017-07-29 91 views
1

我想从距离特定方向“看”的另一个节点获取距最近节点(如果有一个)的距离。在特定方向上获取距离最近的SpriteKit节点

在图像中,“P”是玩家的节点,线是要看的方向。圆环是另一个节点,穿过方向线。

获得2个节点之间的距离是没有问题的,但我怎么访问正好穿越我行最近的节点?

+0

创建一个SKShapeNode,它跟随'视线',然后使用'node intersects node'方法来查看线上有哪些节点? –

+0

@SteveIves需要检查每个节点。 OP,查看射线测试或点击测试,因为这是你想要做的。除了使用物理世界来获得你想要做的事之外,我不知道任何事情。 – Knight0fDragon

+0

@ Knight0fDragon如果你能想出一个粗略的例子,那么看到 – Fluidity

回答

1

我假设你的精灵有一些半径,而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)并选择最接近的相交精灵