2017-07-29 3 views
1

特定の方向を「見ている」別のノードから最も近いノード(ある場合)への距離を取得したい。特定の方向に最も近いSpriteKitノードを取得する

「P」はプレイヤーのノードで、行は見る方向です。 circeは方向線を横切る別のノードです。

2つのノード間の距離を取得する問題ではありませんが、どのように私は正確に私のラインを横切る最も近いノードにアクセスできますか?

+0

「視線」の後にSKShapeNodeを作成し、「ノード交差ノード」メソッドを使用してどのノードがその行にあるかを確認します。 –

+0

@SteveIvesすべてのノードをチェックする必要があります。あなたがやりたいことなので、OP、レイテストやヒットテストを見てください。私はあなたがしたいことを得るために物理学の世界を使う以外には何も知らない。 – Knight0fDragon

+0

@ Knight0fDragon – Fluidity

答えて

1

スプライトの半径があるとします。crossing my lineは、ラインからスプライト中心までの距離が半径より小さいことを示します。

方向角Fiがあるので、単位方向ベクトルは

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

であり、線方程式がスプライトの中心からこの線までの距離を見つけるに

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

ある、代替X、playur点がPでありうyをcenter.xとcenter.yで指定します。

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

したがって、スプライトリストをウォークスルーし、sp (dist < spriteRadius)交差したスプライトから最も近いものを選択

関連する問題