我有这个Sprite Kit游戏,可以在屏幕上传递一些球,用户必须点击它们。如果用户错过一个球并且它离开了屏幕,那么他们就输了。
在我的iPhone上测试游戏时效果非常好,但是当我在iPad上运行游戏时,它并不像它应该的那样工作。它也不适用于iPhone X模拟器。当游戏首次启动时,它会进入“开始场景”,但是当用户点击“#34;开始游戏”时#34;它进入游戏场景,然后自动切换到场景上的游戏,而不会产生任何球。我点击了#34;再次播放"它会产生它应该产生的球,但是检测球是否超出界限的测量结果是不正确的(在我的iPhone 8 Plus上进行测试时它们就是这样)。
以下是我认为问题可能出现的地方。这是事物的宽度来自的地方。
EnumerateChildNodes函数删除场景中的球:
func searchChildNodes() {
self.enumerateChildNodes(withName: "BALL") { (node: SKNode, nil) in
if node.position.x < -25 || node.position.x > self.size.width + 25 {
print("balls Out")
node.removeFromParent()
let transition = SKTransition.fade(withDuration: 1)
self.gameScene = SKScene(fileNamed: "GameOverScene")
self.gameScene.scaleMode = .aspectFit
self.view?.presentScene(self.gameScene, transition: transition)
}
}
}
具体在if statement
:
if node.position.x < -25 || node.position.x > self.size.width + 25
如果在||
操作符之后删除该部分,则游戏会让球完成他们想要的操作,但不会检测到屏幕右侧是否超出界限。
更新
以下是设置球在产生时的位置的代码:
if ballDirection == "right" {
player?.position.x = 0
moveRight()
}
else {
player?.position.x = (self.scene!.frame.size.height)
moveLeft()
}