2017-07-29 96 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)並選擇最接近的相交精靈