2017-07-29 6 views
1

Ich möchte die Entfernung zum nächsten Knoten (wenn es einen Knoten gibt) von einem anderen Knoten erhalten, der in eine bestimmte Richtung "schaut".Den nächsten SpriteKit-Knoten in einer bestimmten Richtung abrufen

In dem Bild ist das "P" ein Knoten für den Spieler, und die Linie ist die Richtung zu betrachten. Der Kreis ist ein weiterer Knoten, der die Richtungslinie kreuzt.

Erhalten der Abstand zwischen zwei Knoten ist kein Problem, aber wie kann ich auf den nächsten Knoten genau meine Linie kreuzt?

+0

Erstellen Sie einen SKShapeNode, der der 'Sichtlinie' folgt, und verwenden Sie dann die Methode 'Knoten schneidet Knoten', um zu sehen, welche Knoten auf der Linie sind? –

+0

@SteveIves, die jeden Knoten überprüfen müssten. OP, schau dir Strahltests oder Treffertests an, denn das willst du machen. Ich weiß nichts von außerhalb der Physik-Welt zu wissen, was Sie wollen. – Knight0fDragon

+0

@ Knight0fDragon Wenn Sie mit einem groben Beispiel kommen könnten, das wäre ein sehr cooles Schnipsel, um – Fluidity

Antwort

1

Ich nehme an, dass Ihr Sprite einen gewissen Radius hat, und crossing my line bedeutet, dass der Abstand von Linie zu Sprite-Zentrum kleiner ist als der Radius.

Lassen playur Punkt P, Richtungswinkel ist Fi, so Einheit Richtungsvektor ist

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

und Liniengleichung ist

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

Um Abstand von Sprite-Zentrum zu dieser Linie zu finden, Ersatz x und y mit center.x und center.y

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

So gehen Sie durch Sprite-Liste, überprüfen Sie, ob sp Ritus wird durchschnitten (dist < spriteRadius) und wählen Sie den nächstgelegenen von durchschnittenen Sprites

Verwandte Themen