【发布时间】:2016-10-14 20:59:03
【问题描述】:
我使用 SpriteKit 创建了一个简单的 2D 街机游戏,我正在尝试添加一个评分系统。基本上,该游戏是一个必须跳过各种障碍的方形精灵。所以我想要的是当玩家接触到整个游戏重新开始的对象时。游戏检测到接触(我之前测试过),但是当我移除所有孩子然后运行游戏的基本主要功能时,我注意到旧对象不断产生并相互混乱。
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 函数然后继续用于其他情况
`
【问题讨论】:
-
很抱歉,我不明白你的问题:不清楚你是想完成一个简单的游戏还是失去生命(例如你应该回到以前的无需重新加载完整场景的情况)。无论如何,如果您想结束游戏,您应该遵循 Nik 的答案,否则您应该更正您的属性以表示旧状态。你不应该在 didBegin(_contact) 中这样做,因为它可能会被多次调用(你的代码是错误的..)
-
好的,非常感谢。我相信你所说的多次调用它是错误的。
标签: ios swift sprite-kit