未检测到SKSpriteNode触摸

时间:2018-06-24 02:32:17

标签: ios swift sprite-kit touch skspritenode

我正在尝试在游戏中实现暂停按钮。但是,每次我在iOS设备上点击暂停按钮(SKSpriteNode)时,都不会发生任何事情。我尝试使按钮执行其他操作,并尝试使其他精灵执行操作。尽管我可以触摸屏幕上的任何位置并执行了操作,但没有任何效果。我正在将Swift 4与最新版本的Xcode(9.4.1)一起使用。该应用程序是一个iOS游戏,我正在使用与该应用程序一起创建的GameScene.swift。

这是按钮代码的一部分(忽略了代码的不相关部分):

import SpriteKit
import CoreMotion
import GameplayKit

class GameScene: SKScene, SKPhysicsContactDelegate {

var pauseButton:SKSpriteNode!

override func didMove(to view: SKView) {

    pauseButton = SKSpriteNode(imageNamed: "pauseButton")
    pauseButton.size = CGSize(width: 50, height: 50)
    pauseButton.position = CGPoint(x: self.size.width - 
    pauseButton.size.width, y: self.size.height - 
        pauseButton.size.height)
    pauseButton.zPosition = 5
    self.addChild(pauseButton)

}

override func touchesEnded(_ touches: Set<UITouch>, with: UIEvent?) {

    fireBullet() //This function does not relate to the pause button.

}

override func touchesBegan(_ touches: Set<UITouch>, with event: 
    UIEvent?) {

    let touch = touches.first

        if let location = touch?.location(in: self) {
            let nodesArray = self.nodes(at: location)

        if nodesArray.first?.name == "pauseButton" {
            self.view?.isPaused = true
        }
    }
}
}

预先感谢您抽出宝贵的时间回复,这确实对我有帮助! 托马斯

1 个答案:

答案 0 :(得分:0)

容易修复,在touchesBegan方法中,您正在名为“ pauseButton”的节点上搜索触摸,但是没有名为“ pauseButton”的节点,因此您的搜索返回错误值。

只需在您设置暂停按钮的代码中添加pauseButton.name = "pauseButton"即可,