2015-10-19 55 views
0

對不起,我是法國人。 大家好。移動我的SpriteNode Swift SpriteKit

我目前正在編寫Swift中的一個小遊戲,我想知道如何移動我的角色是在開始的中間,並在使用該功能觸摸時移動移動他跟隨我的手指但不是瞬間的,這是它自己的速度可以說的。如果是這樣,你也可以告訴我如何在我將手指放在箭頭屏幕另一側時將手指放在手指的同一方向上製作我的角色(例如箭頭):)

感謝你的幫助

+0

歡迎的StackOverflow!完成你所要求的一種方法是:http://stackoverflow.com/a/21793439/3402095但這不是唯一的方法。搜索所以,有幾個話題可以覆蓋這個。關於旋轉節點:http://stackoverflow.com/a/29443170/3402095這是一個很好的解決方案,但如果你對更簡單的東西感興趣,請嘗試再次搜索:)最後,閱讀此鏈接以瞭解如何寫一個很好的問題:http://stackoverflow.com/help/how-to-ask – Whirlwind

+0

的如何旋轉節點簡化版本:http://stackoverflow.com/a/32418304/3402095:d – Whirlwind

+0

感謝您的幫助我:DI很高興看到這個網站上有一個很好的社區,與法國社區不同:p我去檢查一下你給我的鏈接:) –

回答

1

這是perferctly的工作,這是我的代碼:

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     for touch : AnyObject in touches { 
      let location = touch.locationInNode(self) 

      let actionBouger = SKAction.moveTo(CGPoint(x: location.x, y: location.y), duration: 2.5) 
      Vaisseau.runAction(actionBouger) 

      let dx = location.x - Vaisseau.position.x 
      let dy = location.y - Vaisseau.position.y 
      var angleInRadians = atan2(dy, dx) - CGFloat(M_PI_2) 

      if(angleInRadians < 0){ 
       angleInRadians = angleInRadians + 2 * CGFloat(M_PI) 
      } 

      Vaisseau.zRotation = angleInRadians 

      let actionAngle = SKAction.rotateToAngle(angleInRadians, duration: 0) 
      Vaisseau.runAction(actionAngle) 
     } 
    }