SuperSpaceMan3D是一个以SceneKit为基础的小游戏项目,作者展示了用SceneKit开发3D游戏的强大威力.不过在实际运行时会发现有一些小bug,这里我们依次尝试将其修复
首先,当spaceman接触到敌人的时候,游戏结束,弹出GameOver视图,然后当玩家再触摸屏幕时,开始新的游戏.在实际游戏中发现,spaceman接触敌人后GameOver视图很快闪过,游戏随即重新开始,不能达到等待用户触摸再开始的目的.
分析发现didBeginContact代码逻辑缺少区分条件,在GameViewController类中添加类级属性:
static var isGameOverViewShowing = false
之所以添加static属性是因为需要在GameView中修改该属性,当然这是一种比较差的重构,应该make一个实例变量.
在spaceman接触敌人的代码逻辑中添加如下代码:
GameViewController.isGameOverViewShowing = true
gameStarted = false<