2016-03-31 39 views
0

我想弄清楚如何在特定的y点锁定SKSpriteNode。当我的手指触摸屏幕时,节点显示在我触摸的点上。这是因为里面TouchesBegan方法,我写的这是行代码:Swift Spritekit。我怎样才能锁定一个特定点的节点?

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点被锁定,这意味着节点只能水平移动,但不能垂直移动。

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

回答

0

location变量是CGPoint类型它是:

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

所以,你可以使用同一个变量location得到x位置并锁定y到您选择的任何点:

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

感谢您的答复,并且还有它的工作。但是,这不是我想要的。当我点击屏幕后,一个节点被完全放置在x点和y点上,就像它们被编程一样。问题在于,在第二次触摸之后,节点移动并且它不会保持在第一次出现的位置。系统运行时,我希望该节点永远在那里。我将如何能够做到这一点? – bagels

+0

@ryohei那么你有几个解决方案。其中之一是直接在你的touchesBegan方法中生成精灵。你创建你的精灵,然后把它的位置分配给你的触摸位置。 –

相关问题