Swift Spritekit。我如何能够在特定点锁定节点?

时间:2016-03-31 14:38:42

标签: swift sprite-kit

我想弄清楚如何在特定的y点锁定SKSpriteNode。当我的手指触摸屏幕时,节点显示在我触摸的位置。这是因为在TouchesBegan方法内部,我编写了以下代码行:

if isMovable == false {
  isMovable = true
  for touch in touches {
    let location = touch.locationInNode(self)
    ship.position = location
  }
}

然后,我编写了这些代码行,以便只得到x点:

for touch in touches {
  let location = touch.locationInNode(self)
  ship.position = CGPointMake(location, self.frame.height/2 - 200)
}

但是,我得到的结果是该位置在那里不可用,因为它是CGPoint,而不是CGFloat。我试图将其投射为CGFloat(location),但是徒劳无功。有没有办法在y点锁定节点?

我想要的功能是当我触摸屏幕上的任何地方时,y点被锁定,这意味着节点只能水平移动,但不能垂直移动。

由于我的英语不够好,我可能缺少一些解释,让你们更清楚地理解我的问题。如果你了解我,我会感激,并给我解决方案!提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的location变量的类型为CGPoint,即:

  

包含二维坐标系中的点的结构。   Apple Documentation

因此,您可以使用相同的变量location获取x位置,并将y锁定到您选择的任何位置:

for touch in touches {
   let location = touch.locationInNode(self)
   ship.position = CGPointMake(location.x, self.frame.height/2 - 200)
}