2016-03-31 12 views
0

Ich versuche herauszufinden, wie man eine SKSpriteNode an einem bestimmten y-Punkt sperren. Wenn mein Finger den Bildschirm berührt, wird der Knoten an dem Punkt angezeigt, an dem ich ihn berührt habe. Dies liegt daran, innerhalb TouchesBegan Methode, ich Zeilen Code geschrieben, die sind:Swift Spritekit. Wie kann ich einen Knoten an einem bestimmten Punkt sperren?

if isMovable == false { 
    isMovable = true 
    for touch in touches { 
    let location = touch.locationInNode(self) 
    ship.position = location 
    } 
} 

Und dann schrieb ich diese Zeilen Code statt, um nur den x-Punkt zu bekommen:

for touch in touches { 
    let location = touch.locationInNode(self) 
    ship.position = CGPointMake(location, self.frame.height/2 - 200) 
} 

jedoch Das Ergebnis, das ich bekam, war, dass der Standort dort nicht verwendbar ist, weil es CGPoint ist, nicht CGFloat. Ich habe versucht, es als CGFloat(location) zu werfen, aber vergeblich. Gibt es eine Möglichkeit, einen Knoten an einem y-Punkt zu sperren?

Die wünschenswerte Funktion, die ich möchte, ist, wenn ich irgendwo auf dem Bildschirm berühren, ein y-Punkt ist gesperrt, was bedeutet, dass ein Knoten nur horizontal beweglich ist, aber nicht vertikal beweglich.

Da mein Englisch nicht gut genug ist, fehlt mir vielleicht eine Erklärung, die es Ihnen ermöglicht, mein Problem besser zu verstehen. Ich schätze es, wenn Sie mich verstehen, und geben Sie mir die Lösung! Danke im Voraus.

Antwort

0

Ihr location Variable ist vom Typ CGPoint welche ist:

Eine Struktur, die einen Punkt in einem zweidimensionalen Koordinatensystem enthält. Apple Documentation

So könnte man dieselbe Variable location verwenden, um die x Position zu bringen und verriegeln Sie die y, was auch immer Sie wählen, Punkt:

for touch in touches { 
    let location = touch.locationInNode(self) 
    ship.position = CGPointMake(location.x, self.frame.height/2 - 200) 
} 
+0

Vielen Dank für die Antwort und gut es funktionierte. Dies ist jedoch nicht das, was ich gesucht habe. Nachdem ich auf den Bildschirm getippt habe, wird ein Knoten genau in einem x-Punkt und einem y-Punkt platziert, wie sie programmiert wurden. Das Problem ist, dass sich der Knoten nach einer zweiten Berührung bewegt und nicht dort bleibt, wo er zuerst erschienen ist. Ich möchte, dass dieser Knoten für immer da ist, während das System läuft. Wie könnte ich das tun? – bagels

+0

@ryohei Nun, Sie haben ein paar Lösungen. Einer von ihnen ist es, Sprites direkt in Ihrer Methode "touchesBegan" zu generieren. Du erstellst dein Sprite und weist es dann deinem Touch-Ort zu. –

Verwandte Themen