gpt4 book ai didi

xcode - 为什么 SKNode 在 SpriteKit 游戏中对触摸没有反应?

转载 作者:行者123 更新时间:2023-11-28 07:08:51 26 4
gpt4 key购买 nike

为了在 SpriteKit 游戏中暂停,我制作了一个暂停按钮。当我想制作另一个暂停场景并响应触摸正在过渡到一个场景时,它就像一个魅力。然后我的函数看起来 like this (P.S. pause = 暂停按钮)但是它还有其他问题,我决定在我的主场景中暂停:playscene所以我添加了一个 pauseBackgroundresumeButton 附加到暂停背景并将其隐藏(声明 resumeButton.hidden = true)现在我的函数看起来像这样:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
if self.onGround {
self.speedY = -20.0
self.onGround = false
}
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if self.nodeAtPoint(location) == self.pause {
self.scene?.view?.paused = true
self.pauseBackground.hidden = false
self.resumeButton.hidden = false
if self.nodeAtPoint(location) == self.resumeButton {
self.pauseBackground.hidden = true
self.resumeButton.hidden = true
self.scene?.view?.paused = false
}
}
}
}

这很有趣,因为它适用于场景转换,但现在 Xcode 无法检测或忽略我在暂停按钮位置的点击。我真的不知道为什么。请你帮助我好吗? 更新:我试过 switch 语句:

for touch: AnyObject in touches {
let location = touch.locationInNode(self)
switch self.nodeAtPoint(location) {
case self.pause:
self.scene?.view?.paused = true
self.pauseBackground.hidden = false
self.resumeButton.hidden = false
case self.resumeButton:
self.pauseBackground.hidden = true
self.resumeButton.hidden = true
self.scene?.view?.paused = false
default:
println()

}
}

遗憾的是,它也不起作用!我真的不知道为什么它没有检测到那个位置的触摸。

最佳答案

  1. 为您的暂停按钮命名。通过打印被触摸节点的名称来控制是否在 touchesBegan 中触摸暂停按钮。

  2. 控制触摸节点的zPosition和暂停按钮。设置暂停按钮的 zPosition = 1000 并尝试触摸它。

编辑:

enter image description here

比方说,节点node1是pauseButton的父节点。

node1.zPosition = 100.0f;
pauseButton.zPosition = 200.0f;

continueButton 在场景之上

continueButton.zPosition = 250.0f;

也就是说,pauseButton的zPosition比父节点node1高200。 continueButton的zPosition(250)小于场景上方的pauseButton的zPosition,虽然zPosition好像少了(200)。那是因为 pauseButton 的 zPosition 在场景上方 300。父节点的zPosition对于控制子节点和场景中其他节点的zPosition非常重要。

节点的 zPosition 总是相对于它的父节点。您的两个按钮(暂停和恢复按钮)是否具有相同的父节点?控制触摸节点的最好方法是给每个节点一个名称和一个 zPosition,并在 touchesBegan 中打印这个(名称和 zPosition with NSLog()/println())。有了这个你就知道哪个节点被触摸了,你知道它的 zPosition。因此,您可以更正每个节点的 zPosition,使其按您的需要工作。

关于xcode - 为什么 SKNode 在 SpriteKit 游戏中对触摸没有反应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29320554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com