Ich habe ein einfaches 2D-Arcade-Spiel mit SpriteKit erstellt und versuche ein Scoring-System hinzuzufügen. Das Spiel ist ein quadratisches Sprite, das über verschiedene Hindernisse springen muss. Also was ich will ist, wenn der Spieler das Objekt für das ganze Spiel kontaktiert, um neu zu starten. Das Spiel erkennt den Kontakt (ich habe es vorher getestet), aber wenn ich alle meine Kinder entferne und dann die grundlegende Hauptfunktion meines Spiels ausführe, merke ich, dass alte Objekte immer wieder zusammenkommen und sich gegenseitig überfluten.Sprite neu starten - Kit Game Swift
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()
}
// die didBeging func für andere Fälle wird dann
`
Es tut mir leid, aber ich verstehe Ihre Frage nicht: Es ist nicht klar, ob Sie ein einfaches Spiel über oder den Verlust eines Lebens (wo Sie zum Beispiel zurückkehren sollten, ohne die volle neu zu laden Szene). Wie auch immer, wenn du ein Spiel über dir haben willst, solltest du der Antwort von Nik folgen, ansonsten solltest du deine Eigenschaften korrigieren, um einen alten Zustand darzustellen. Sie sollten nicht in didBegin (_contact) tun, weil es oft aufgerufen werden könnte (Ihr Code ist falsch ..) –
Okay vielen Dank. Ich glaube, was du gesagt hast, dass es mehrmals aufgerufen wurde, ist falsch. –