2017-06-01 5 views
1

Ich bin eine Sprite-Kit-Anwendung Codierung und schnell, wo, wenn Sie den Bildschirm berühren ein Sprite (der Spieler) wirft ein Projektil auf ein anderes Sprite auf ihn zu bewegen. Wenn der Spieler das andere Sprite trifft, verschwinden das Projektil und das Sprite. Ein Problem mit dem Spiel ist, dass, wenn der Spieler schnell den Bildschirm berührt, er leicht seine Punktzahl im Spiel hochlaufen kann. Wie kann ich den Code nur erkennen lassen, dass der Bildschirm alle 0,3 Sekunden berührt wird?Filterung schnell Benutzer Touch-Eingabe

+0

Bitte zeigen Sie uns, was Sie versucht haben. Siehe: [Wie erstelle ich ein minimales, vollständiges und überprüfbares Beispiel?] (Https://stackoverflow.com/help/mcve) – CodingNinja

Antwort

1

In SpriteKit/GameplayKit-Spielen läuft der meiste Code in einer Spielschleife, in der Sie ständig die aktuelle Zeit durchlaufen. Das ist, was diese Funktion in einer SKScene ist:

override public func update(_ currentTime: TimeInterval) { 
} 

Hier drin ist es üblich, den Überblick über Zeit zu halten und aktivieren/deaktivieren Dinge. Um es einfach:

  1. Fügen Sie die folgenden Vars

    var firingEnabled = true 
    var enableFiringAtTime: TimeInterval = 0 
    var currentTime: TimeInterval = 0 
    
  2. Wenn sie Feuer, fügen Sie diesen Code

    if firingEnabled { 
        firingEnabled = false 
        enableFiringAtTime = self.currentTime + 0.3 
        // your fire code here 
    } 
    
  3. Und in der Update-Überschreibung

    self.currentTime = currentTime 
    if currentTime > enableFiringAtTime { 
        firingEnabled = true 
    }