【发布时间】:2018-05-21 15:12:11
【问题描述】:
我的游戏设置有背景,中间有一条道路,然后顶部有一个显示得分和暂停按钮的栏。道路和背景的zPosition为1。顶部的条zPosition为4,暂停按钮zPosition也是4。
道路和背景代码。
road.position = CGPoint(x: CGFloat(0), y: CGFloat(0))
road.zPosition = 1
road.name = roadName
background.position = CGPoint(x: CGFloat(0), y: CGFloat(0))
background.zPosition = 1
background.name = backgroundName
addChild(background)
addChild(road)
顶部栏的代码。
topBar = SKSpriteNode(color: .black, size: CGSize(width: screenWidth, height: CGFloat(150)))
topBar.position = CGPoint(x: 0, y: (screenHeight/2) + topBar.size.height/2)
topBar.zPosition = 4
topBar.name = topBarName
addChild(topBar)
暂停按钮的代码。
pauseButton.position = CGPoint(x: (-topBar.size.width/2) + (pauseButton.size.width + (pauseButton.size.width/2)), y: 0)
pauseButton.zPosition = 4
pauseButton.name = pauseButtonName
topBar.addChild(pauseButton)
在我的touches开始函数中,我试图搜索touch位置的节点,但它只返回道路和背景的名称。它甚至没有拿起 topBar 或暂停按钮。
for node in nodes
{
print(node.name)
if node.name == pauseButtonName
{
print("paused")
}
}
这将输出
Optional("Road")
Optional("Background")
我也尝试过这种方法,但从未返回“暂停”。
if pauseButton.contains(touch.location(in: self))
{
print("paused")
}
我认为注意顶部栏最初位于屏幕之外可能很重要。当你开始游戏时,它会运行一个 SKAction 来移动屏幕上的栏。
topBar.run(SKAction.moveTo(y: (screenHeight/2) - (topBar.size.height/2), duration: 0.5))
为什么我无法选择暂停按钮,如何解决?
【问题讨论】:
-
您正在将 topBar 添加到 SKScene 并检测 View 中的触摸。您需要将位置转换为 SKScene 到 SKView 位置。 Read this question and comments of the answer。它可能会有所帮助
标签: swift sprite-kit skspritenode touchesbegan