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)
}
您可以設置'userInetractionEnabled'屬性爲每個節點 – Okapi 2014-11-23 18:57:25
我都試過了,它不工作。認爲這是因爲我不與節點交互,只是檢查哪些節點位於我場景中的當前位置。 – 2014-11-23 19:15:52
你的代碼不能在swift 2.0上運行! – 2015-10-05 17:30:02