2016-04-28 8 views
0

Ich habe ein SpaceShooter-Spiel. Ich habe versucht, es besser aussehen zu lassen, indem ich Animationen hinzufüge. Ich habe momentan einen Boss-Kampf im Spiel und ich habe ungefähr 17 Bilder hinzugefügt, die durchkommen.Animierte Sprite bewegt sich nach links und rechts von Spieler Swift gesteuert

Ich habe es geschafft, die Texturen von etwas zu steuern, das nicht vom Spieler gesteuert wird, aber wie würde ich dem Sprite des Spielers Texturen hinzufügen?

Der Spieler steuert ein Space Fighter Schiff links und rechts auf der X-Achse. Ich habe insgesamt 5 Bilder, die ich verwenden möchte (Links 2, Links 1, Mitte, Rechts 1, Rechts 2)

Zweifellos würde ich Schalterfall verwenden müssen oder wenn Aussagen das tun aber was würde ich eingeben müssen um xcode wissen zu lassen, dass ich möchte, dass das Sprite nur dann umschaltet, wenn es bewegt wird, und umgekehrt, wenn es nicht nach links oder rechts bewegt wird?

Ich habe versucht, früher etwas, und ich legte die NSLogs nur um zu sehen, ob es „links“ oder „rechts“ ausgibt, wenn ich es nach links oder rechts bewegt, aber es gibt genau richtig aus irgendeinem Grund

Hier ist der Code I haben für den Spieler

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     /* Called when a touch begins */ 

     for touch: AnyObject in touches { 
      let location = touch.locationInNode(self) 

      Player.position.x = location.x 

     } 
    } 

     override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 

    for touch: AnyObject in touches { 
     let location = touch.locationInNode(self) 
     var previousPosition: CGFloat = 0 

     Player.position.x = location.x 

     if Player.position.x > previousPosition 
     { 
      NSLog("Right") 
      // add textures here 
     } 
     else if Player.position.x < previousPosition 
     { 
      NSLog("Left") 
      // add textures here 
     } 
     previousPosition = Player.position.x 
+0

'previousPosition' ist eine lokale Variable, die bei jedem Aufruf immer auf 0 initialisiert wird. –

Antwort

0

Ich bin ziemlich sicher, dass dies den Trick tun wird. Alles, was Sie tun müssen, ist nur die Textur des Players auf die gewünschte Textur zu ändern.

for touch: AnyObject in touches { 
    let location = touch.locationInNode(self) 
    var previousPosition: CGFloat = 0 

    Player.position.x = location.x 

    if Player.position.x > previousPosition 
    { 
     NSLog("Right") 
     // add textures here 
     Player.texture = SKTexture(imageNamed: "RightImage") 
    } 
    else if Player.position.x < previousPosition 
    { 
     NSLog("Left") 
     // add textures here 
     Player.texture = SKTexture(imageNamed: "LeftImage") 
    } 
Verwandte Themen