仅检测主节点/父节点上的tap,而不是子节点

时间:2014-11-23 14:56:54

标签: ios swift sprite-kit skspritenode

我有一个移动的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)
}

1 个答案:

答案 0 :(得分:1)

解决了它将SKEmitterNode的targetnode属性设置为另一个节点,而不是检测到点击的节点。

https://developer.apple.com/library/mac/Documentation/SpriteKit/Reference/SKEmitterNode_Ref/index.html#//apple_ref/occ/instp/SKEmitterNode/targetNode

emitter.targetNode = self.scene