重新启动Sprite – Kit Game Swift

我用SpriteKit创build了一个简单的2D街机游戏,我正在尝试添加一个评分系统。基本上这个游戏是一个方形的精灵,它必须跳过各种障碍。 所以我想要的是当玩家联系整个游戏的对象重新启动。 游戏检测到的联系(我之前testing过),但当我删除所有的孩子,然后运行我的游戏的基本主要function,我注意到,旧对象保持产卵和彼此混乱。

func didBegin(_ contact: SKPhysicsContact) { if (contact.bodyA.categoryBitMask == PhysicsCategory.Player && contact.bodyB.categoryBitMask == PhysicsCategory.Obstacles ) { //case where PLAYER collides with OBSTACLE print("I detect Contact") Scorelabel.text = "0" scoreCounter = 0 self.removeAllActions() self.removeAllChildren() self.setupGame() } 

// didBeging func然后继续其他情况

`

如果您尝试重新启动场景,则只能显示相同的场景,并重置为其默认值:

 let scene = GameScene(size: self.size) // Whichever scene you want to restart (and are in) let animation = SKTransition.crossFade(withDuration: 0.5) // ...Add transition if you like self.view?.presentScene(scene, transition: animation) 

把这个代码放在你想要重启的场景中。 当你想重新启动场景时应该调用它。

如果您尝试进行无缝过渡,您可能只想不显示animation(或进行交叉淡入淡出)。

或者,您可能希望通过场景/菜单创build游戏。 这可能只是另一个SKNode,一旦游戏重置或甚至另一个场景,就会变得可见。

首先,你应该检查两种情况,如果玩家是联系人A或者如果玩家是联系人B.其次,你应该分配你想要删除的对象,让障碍说,一个variables,例如让我们说,对象B es障碍,然后:contact.bodyB.node.removeFromParent(),您将成功删除该对象。