SpriteKit屏幕宽度测量不正确

时间:2018-02-11 18:51:03

标签: ios iphone ipad sprite-kit

我有这个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()
}

0 个答案:

没有答案