2014-11-23 65 views
1

我有一個移動的SKSpriteNode,其中我檢測基於節點名稱與TouchesBegan場景上的水龍頭。 這個工作很完美,直到我將SKEmitterNode作爲子節點添加到移動節點,並在移動節點後面留下一圈圓。檢測只在主節點/父母,而不是子節點的水龍頭

當觸摸SKEmitterNode粒子軌跡時,現在檢測到我在主/父節點上的觸摸。

我如何才能檢測接觸我的主/父spritenode,但不是在這個精靈的子節點?

當點擊ouside node1.size的火花時,爲什麼touch1中的「node1」返回而不是「emitter」?

例GameScene.swift

override func didMoveToView(view: SKView) { 

    let node1 = SKSpriteNode(color: SKColor.redColor(), size: CGSizeMake(400, 300)) 
    node1.position = CGPointMake(size.width/2, size.height/2) 
    node1.name = "node1" 
    addChild(node1) 

    let emitter = SKEmitterNode(fileNamed: "MyParticle.sks") 
    emitter.name = "emitter" 
    emitter.zPosition = -1 
    node1.addChild(emitter) 

} 


override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
    /* Called when a touch begins */ 
    let touch: UITouch = touches.anyObject() as UITouch 
    let location = touch.locationInNode(self) 

    let touchedNode = nodeAtPoint(location) 

    println(touchedNode.name) 
} 
+0

您可以設置'userInetractionEnabled'屬性爲每個節點 – Okapi 2014-11-23 18:57:25

+0

我都試過了,它不工作。認爲這是因爲我不與節點交互,只是檢查哪些節點位於我場景中的當前位置。 – 2014-11-23 19:15:52

+0

你的代碼不能在swift 2.0上運行! – 2015-10-05 17:30:02

回答

相關問題