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

时间:2017-07-29 13:50:26

标签: sprite-kit geometry skspritenode

我想从另一个节点得到距离最近的节点(如果有一个节点)的距离"看"在一个特定的方向。

在图像中," P"是播放器的节点,线是要查看的方向。 circe是另一个节点,越过方向线。

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

1 个答案:

答案 0 :(得分:1)

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

让playur点为P,方向角为Fi,因此单位方向向量为

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

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