2016-08-28 6 views
3

Ich bin sehr neu in SpriteKit, also Entschuldigung für eine Anfänger-Frage.SpriteKit Origination und Winkel der Geste

Ich habe zwei Objekte, aus denen ein Benutzer in Richtung eines "Zieles" wischen kann. Ich muss den Ursprungspunkt (dh von welchem ​​der zwei Objekte die Berührung stammt) und den Wischwinkel bestimmen.

Ich kann touchesBegan und touchesEnded verwenden, um diese selbst zu berechnen, aber frage mich, ob es andere Möglichkeiten gibt, es mit Sprites zu tun.

Danke.

+1

Warum brauchen Sie einen anderen Weg? Es funktioniert wie du es beschreibst ... Zeigt wo du anfängst und wo du endest. Einfach, einen Vektor zwischen den zwei Punkten zu berechnen. – Kendel

+0

Vielleicht möchte Alex etwas _more_ zu seinen Objektbewegungen :) sehe meine Antwort. – Fluidity

+0

Kendel, ich brauchte keinen anderen Weg, wollte einfach nicht für etwas codieren, das eine fertige Lösung hat, scheint, als ob dies der einfachste Weg ist ... – Alex

Antwort

3

Es gibt immer anderen Weg, etwas zu tun - das ist die Programmierung! Aber, wie Rube Goldberg unten zeigt, ist eine andere Art und Weise vielleicht nicht die beste/einfachste Weg:

enter image description here

touchesEnded Verwenden Sie machen wie eine Art ‚schleudern‘ Geste, die etwas begrenzt werden kann darin Fähigkeiten .

Beispiel Wenn Sie möchten, dass das Objekt kontinuierlich eine Geschwindigkeit von einigen f von x erreicht/kleine Pfadänderungen vornimmt (ohne den Finger heben zu müssen), können Sie touchesMoved verwenden. Füllen Sie es mit den Berechnungen/Funktionen, die Sie mögen.

Beispiel: ein Knoten mit Ihrem Touch ziehen:

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    //-Main touch processoereor 
    for touch in touches { 

     let TPOINT = touch.locationInNode(self) 
     my_super_cool_node!.position = TPOINT 

     // Put math stuff here, etc. 

    } 
} 

Dies gibt Ihnen viel mehr Kontrolle darüber, was von Punkt A zu Ihrem Sprit passiert B.

Hier-zu-Punkt ist ein gutes Tutorial:

http://www.globalnerdy.com/2016/02/02/writing-ios-games-with-swift-and-sprite-kit-part-2-responding-to-touches/

Und Sachen Apple: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIResponder_Class/#//apple_ref/occ/instm/UIResponder/touchesMoved:withEvent:

Leider werden die besten Dinge in SpriteKit erfordern einige clevere Implementierungen/Mathematik, und kann nicht alles mit dem Szeneneditor und und Knoten getan werden.

Was Sie sprechen tun ist eine ziemlich Routine (Mathematik) -Funktion, die Entfernung Formel, so ist es ziemlich vorteilhaft, eine tatsächliche func daraus zu machen, so dass Sie es anpassen können und nicht manuell schreiben müssen eine Menge Code für jede Sache, die Sie tun möchten. SK macht die Dinge schon super leicht. Schon die einfache Hallo Welt mit spinnigen Raumschiffen wäre mit C++ Direct3d/OpenGL (und jeder Menge fortgeschrittener Mathematik) schon tausend Zeilen Code (oder mehr) gewesen.

Der SK-Editor ist großartig, und mit ein wenig Programmierung auf dem Backend können Sie wirklich volle Spiele nur vom Editor machen.

+0

Danke. Ich habe in meinem (einfachen) Fall touchingBegan/Ended verwendet, aber ich sehe deinen Punkt, dass touchesMoved mehr Kontrolle auf dem Weg gibt. – Alex

+0

@AlexZabrodskiy NP, ich stellte mir eine Art Hockey oder Fußball vor (Futbol) und ich dachte, was wäre, wenn er versuchte, etwas Spin drauf zu legen? berührtEnded würde nicht xD funktionieren (wie eine Zickzack-Bewegung) – Fluidity