获取某个方向上最近的 SpriteKit 节点

Get the closest SpriteKit node in a certain direction

我想从另一个节点 "looking" 在特定方向获取最近的节点(如果有的话)的距离。

图中"P"是玩家的节点,线是看的方向。 circe是另一个节点,穿过方向线。

获取 2 个节点之间的距离不是问题,但如何访问恰好穿过我的线的最近节点?

我假设你的精灵有一些半径,crossing my line表示从线到精灵中心的距离小于半径。

设玩家点为P,方向角为Fi,则单位方向向量为

dx = cos(fi)
dy = sin(fi)

直线方程为

 - x * dy + y * dx + q = 0
 where
 q = dy * p.x - dx * p.y 

要找到精灵中心到这条线的距离,用 center.x 和 center.y

替换 x 和 y
dist = - center.x * dy + center.y * dx  + q

所以遍历精灵列表,检查精灵是否相交(dist < spriteRadius)并从相交的精灵中选择最接近的精灵