我有一个移动的SKSpriteNode,我根据节点名称使用TouchesBegan检测场景上的点击。 这非常有效,直到我将一个SKEmitterNode作为一个孩子加入到移动节点中,在移动节点后留下一圈圆圈。
现在,在触摸SKEmitterNode粒子轨迹时,我会检测到主/父节点上的触摸。
我怎样才能检测主/父spritenode上的触摸,但不能检测此精灵的子节点上的触摸?
当点击ouside node1.size的火花时,为什么" node1"在touchesbegan中返回而不是"发射器"?
示例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 :(得分:1)
解决了它将SKEmitterNode的targetnode属性设置为另一个节点,而不是检测到点击的节点。
emitter.targetNode = self.scene