2016-07-24 108 views
2

我有一个SKSpriteNode可以移动到我触摸的任何地方,我希望它移动到我的手指所在的位置,只是沿着一条水平线移动,因此无法垂直移动。如何沿着水平线移动SKSpriteNode

class GameScene: SKScene { 

var ship = SKSpriteNode() 

override func didMoveToView(view: SKView) { 
    /* Setup your scene here */ 



    let shipTexture = SKTexture(imageNamed: "Evaders Art/EvadersShipVert2.png") 

    ship = SKSpriteNode(texture: shipTexture) 

    ship.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame) - 250) 

    ship.size = CGSize(width: 90, height: 115) 

    shipTexture.filteringMode = SKTextureFilteringMode.Nearest 

    ship.zPosition = 2 





    self.addChild(ship) 



} 

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    var nodeTouched = SKNode() 
    var currentNodeTouched = SKNode() 

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

     nodeTouched = self.nodeAtPoint(location) 
     ship.position = location 

    } 

} 

这是我的代码,在此先感谢。

回答

1

试试这个:

ship.position.x = location.x 

目前,你船的位置设置为龙头的位置。如果你想要一个一致的y位置,只需设置x。

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/13108728) –

+0

这的确提供了一个答案。它显示了如何解决OP的问题。 – penatheboss

+0

你应该解释为什么这段代码被认为是答案。船舶位置需要通过从当前触摸位置分配值来更新等。仅仅张贴源代码而没有任何叙述是令人不悦的。 –