Ich arbeite an einem Spiel, in dem Knoten kontinuierlich den Bildschirm nach unten scrollen. Ich habe sie an einer bestimmten Position zum Laichen einrichten und alles sieht auch:Wie platziere ich SKSpriteNodes?
Das Problem tritt auf, wenn der Benutzer das Spiel wiederholt Pausen, die Knoten falsch ausgerichtet bekommen so:
Ich glaube, wenn ich das Spiel pausiere, wird mein Timing abgeworfen. Hier sind meine updateCurrentTime() Funktionen. Ich habe es so eingestellt, dass es alle 0,6 Sekunden eine neue zufällige Reihe hinzufügt.
func updateWithTimeSinceLastUpdate (_ timeSinceLastUpdate:CFTimeInterval) {
lastYieldTimeInterval += timeSinceLastUpdate
if lastYieldTimeInterval > 0.6 {
lastYieldTimeInterval = 0
addRandomRow()
}
}
override func update(_ currentTime: TimeInterval) {
if screenIsPaused == 1{
pauseScreen()
}else if screenIsPaused == 0{
unPauseScreen()
screenIsPaused = 2
} else if screenIsPaused == 3{
gameLayer.isPaused = true
}
var timeSinceLastUpdate = currentTime - lastUpdateTimeInterval
lastUpdateTimeInterval = currentTime
if timeSinceLastUpdate > 1 {
timeSinceLastUpdate = 1/60
lastUpdateTimeInterval = currentTime
}
updateWithTimeSinceLastUpdate(timeSinceLastUpdate)
}
Hier ist der Code, den ich mein Spiel pausieren:
func pauseScreen(){
overlay.color = UIColor.black
overlay.alpha = 0.6
overlay.size.height = self.size.height
overlay.size.width = self.size.width
overlay.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2)
overlay.zPosition = 100
addChild(overlay)
gameLayer.isPaused = true
screenIsPaused = 3
label.text = "Press screen to play!"
label.fontColor = SKColor.white
label.fontSize = 50
label.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
addChild(label)
let Fade = SKAction.sequence([SKAction.fadeIn(withDuration: 1), SKAction.fadeOut(withDuration: 1)])
label.run(SKAction.repeatForever(Fade))
}
func unPauseScreen(){
label.removeFromParent()
overlay.removeFromParent()
screenIsPaused = 2
gameLayer.isPaused = false }
Die Pause-Funktion in touchesEnded() und der un-Pause-Funktion in touchesBegan aufgerufen wird aufgerufen .
Bitte lassen Sie mich wissen, wenn es etwas gibt, was ich versuchen kann oder wenn Sie weitere Informationen benötigen. Vielen Dank!