2016-04-18 5 views
1

Ich habe die this Antwort auf Stack-Überlauf gefunden, aber ich möchte eine Änderung daran vornehmen, dass ich einfach nicht herausfinden kann. Die Antwort auf diese Frage zeigt, wie man die Rakete in Richtung des Fingers bewegt. Ich möchte jedoch, dass es sich in Richtung eines anderen Knotens (in meinem Fall ein Schiff) bewegt, was bedeutet, dass es, anstatt meinem Finger zu folgen, dem Schiff folgt. Wie kann man das erreichen?Wie Knoten in die Richtung eines anderen Knotens verschieben

Vielen Dank

Antwort

1

Es ist sehr einfach:

1) Statt touchesMoved Verwendung update Methode.

2) Anstelle der Touch-Position die Position des Spielers verwenden.

override func update(currentTime: NSTimeInterval) { 

     let location = player.position 

     //Aim 
     let dx = location.x - missile.position.x 
     let dy = location.y - missile.position.y 
     let angle = atan2(dy, dx) 

     missile.zRotation = angle 

     //Seek 
     let vx = cos(angle) * missileSpeed 
     let vy = sin(angle) * missileSpeed 

     missile.position.x += vx 
     missile.position.y += vy 
} 
+0

Danke für die tolle Antwort. Es funktioniert großartig, aber das ist ein Problem. Wenn die zwei Knoten kollidieren, ist die zPosition der Rakete überall und bedeutet, dass sie sich wie verrückt zu drehen beginnt. Wie kann ich das beheben? –

+0

Ich habe versucht, nur ein wenn sonst Staubblätter sagen, dass, wenn sie die zPosition berührt ändern würde, aber das hat nicht funktioniert –

+0

@HarrisonR Nun, was passiert, wenn der Kontakt zwischen Spieler und einer Rakete hängt von Ihnen ... Sie haben um die Kontakterkennung zu implementieren und entsprechende Maßnahmen zu ergreifen (Entfernen von Knoten, Explosion usw.). Dies war nur ein Beispiel dafür, wie Such-/Ziellogik implementiert werden kann. Alles darüber hinausgehende liegt außerhalb des Geltungsbereichs der verknüpften Frage sowie außerhalb des Rahmens dieser Frage. – Whirlwind