2016-10-23 10 views
0

Nach dem folgenden Code, ich bin ein Berg (Hügel) in der Szene bei x = 400 und y = self.frame.height/2SKSpriteNode Animation von unten nach oben erscheinen

Anzeige Ich möchte jedoch die Hügel von Bottom erscheinen (von unterhalb der Szene) wie eine Animation. Wie kann ich das programmieren?

let hill = SKSpriteNode(imageNamed: "hill") 



hill.position = CGPoint(x: 400, y: self.frame.height/2) 



hill.setScale(1) 

hill.physicsBody = SKPhysicsBody(rectangleOfSize: hill.size) 

hill.physicsBody?.categoryBitMask = 1 

hill.physicsBody?.collisionBitMask = 2 

self.addChild(hill) 
+0

Bitte fügen Sie mehr Klarheit zu Ihrer Frage hinzu. Soll es von "unterhalb" der Szene erscheinen? – Nik

+0

Ja, von unterhalb der Szene. – Illep

Antwort

0

eine Animation zu erstellen, die die Sprite-Folie nach oben aus "unter" der Szene macht, dies zu tun:

Stellen seine Ausgangsposition unterhalb der Szene:

hill.position = CGPoint(x: 400, y: self.frame.height/CGFloat(2) - self.frame.height) 

Hinweis: - self.frame.height wird verwendet, um den Knoten 1 mit voller Rahmenhöhe unterhalb der gewünschten Position zu platzieren

Dann starten Sie eine Aktion, die sich bewegt es bis zu seiner gewünschten Position in didMoveToView, oder wo auch immer Sie wollen die Animation starten:

let moveUpAnimation = SKAction.move(to: CGPoint(x: 400, y: self.frame.height/CGFloat(2)), duration: 0.75) 

hill.run(moveUpAnimation) 

In diesem Beispiel wird eine Aktion, die auf eine volle Rahmenhöhe 0,75 Sekunden zu bewegen, um die Sprite nimmt. Sie können die Anfangsposition auf eine beliebige Stelle unterhalb der sichtbaren Szene einstellen, um diesen Effekt zu erzeugen, und die Dauer auf jede gewünschte Geschwindigkeit ändern.

+0

Ich bekomme einen Fehler. Es besagt, dass 'Binary operator '/' nicht auf Operanden vom Typ 'CGFloat' und 'Int'' angewendet werden kann und dies unter' SKAction.moveTo (y: self.frame.height/2, duration: 0.75) ' – Illep

+0

Now angezeigt wird Es besagt, dass der binäre Operator '/' nicht auf Operanden vom Typ 'CGFloat' und 'Double' angewendet werden kann. Entschuldigung, ich bin ein Neuling – Illep

+0

Kann Wert des Typs 'CGFloat' nicht in erwarteter Argumenttyp 'CGPoint' konvertieren – Illep

Verwandte Themen