2015-10-19 48 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) 
     } 
    }