2017-03-05 5 views
1

In einem Menü meines Spiels:entfernt Sprite noch anklickbare

  1. Es ist ein Feld, das der Benutzer klicken kann. In der ersten Stufe enthält diese Box nur einen "Assistenten" Sprite

  2. Wenn entweder auf die Box oder das Bild geklickt/geklickt wird, wird der Assistent entfernt und durch 2 Schaltflächen ersetzt, eine zum Zurückgehen und eine zum Zurück bestätigen.

  3. Ich habe dies so einrichten, habe ich eine Variable (beenClicked2) auf 0 gesetzt ist, wenn die Box in der Stufe 1 (oder nur, wenn der Assistent Sprite in es ist)

  4. Wenn die Box gedrückt Die Variable beenClicked2 ändert sich zu 1, sodass die Box in Phase 2 nicht mehr angeklickt werden kann und nicht abstürzt.

  5. Wenn jedoch die Box nur den Assistenten zeigt (Stufe 1), um die Zurück-Taste aus Stufe 2 ist noch anklickbare was bedeutet, dass die Box nicht die 2 Tasten zeigt, und bleibt nur in Stufe 1

Bild dies zeigen: https://www.dropbox.com/s/st5fgv25fp3rz30/Image.png?dl=0

Hier ist mein Code:

//PURCHASING 
     if atPoint(location) == customBack2 || atPoint(location) == twoLivesWizard { 
      if lock1 == 0 && beenClicked2 == 0 { 
       twoLivesWizard.removeFromParent() 
       locked.removeFromParent() 
       self.addChild(purchaseText1) 
       self.addChild(purchaseTick1) 
       self.addChild(purchaseBack1) 

       beenClicked2 = 1 
       print("\(beenClicked2)") 
      } 
     } 

//Cancel Purchase 
     if atPoint(location) == purchaseBack1 { 
      beenClicked2 = 0 
      self.addChild(locked) 
      self.addChild(twoLivesWizard) 
      purchaseText1.removeFromParent() 
      purchaseTick1.removeFromParent() 
      purchaseBack1.removeFromParent() 

      print("\(beenClicked2)") 
     } 
+0

Ein Mangel an Informationen hier. 1) Welches Sprite ist noch anklickbar (du hast das in deinem Titel erwähnt)? 2) Versuchen Sie, "an die falsche Stelle zu klicken"? 3) Worum handelt es sich bei der * Box *? Versuchen Sie, genauer zu sein, wenn Sie Probleme veröffentlichen. Hilf den Leuten, dir zu helfen. – Whirlwind

+0

@Whirlwind Hallo, tut mir leid, dass ich nicht klar bin. Ich habe die Frage aktualisiert. Hoffe das hilft! –

Antwort

1

Hier ist ein einfaches Beispiel bearbeitbar, der wahrscheinlich geben Ihnen einen Anhaltspunkt, in welche Richtung Sie gehen könnte:

import SpriteKit 

class GameScene: SKScene { 

    private let box = SKSpriteNode(color: .yellow, size: CGSize(width: 200, height: 300)) 

    private let wizard = SKSpriteNode(color: .purple, size: CGSize(width: 150, height: 250)) 
    private let back = SKSpriteNode(color: .gray, size: CGSize(width: 75, height: 75)) 
    private let confirm = SKSpriteNode(color: .lightGray, size: CGSize(width: 75, height: 75)) 

    private var stage = 0 

    override func didMove(to view: SKView) { 

     addChild(box) 
     box.addChild(wizard) 
     wizard.zPosition = 1 
     back.zPosition = 1 
     confirm.zPosition = 1 
     back.position.x = -50 
     confirm.position.x = 50 
    } 

    private func toggleStage(){ 

     if stage == 0 { 

      wizard.removeFromParent() 
      box.addChild(confirm) 
      box.addChild(back) 
      stage = 1 
     }else{ 

      confirm.removeFromParent() 
      back.removeFromParent() 
      box.addChild(wizard) 
      stage = 0 
     } 
    } 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 

     if let touch = touches.first { 

      let location = touch.location(in: self) 

      if stage == 0 { 

       if atPoint(location) == wizard { 
        toggleStage() 
       } 
      }else{ 
       if atPoint(location) == back { 
        print("Back button tapped") 
        toggleStage() 
       }else if atPoint(location) == confirm { 
        print("Confirm button tapped") 
       } 
      } 
     } 
    } 
} 

Im Grunde, was Sie tun müssen, ist Sprites auf der Bühne Basis zu tauschen. Persönlich würde ich meine eigene Klasse namens Menu, Button oder etwas ähnliches machen und Delegation implementieren, wenn sie benötigt wird. Aber das bin nur ich.