禁用子SKEmitterNode上的触摸

时间:2018-03-25 07:38:10

标签: touch parent-child skspritenode skemitternode child-nodes

我创建了一个带有Emitter as Child

的SKSpriteNode
onObject: SKSpriteNode! = SPSpriteNode(texture: ballTexture)
onObject.physicsBody = SKPhysicsBody(circleOfRadius: (ballSize / 2) * 0.99)
        onObject.physicsBody?.affectedByGravity = true
        onObject.physicsBody?.allowsRotation = true
        onObject.physicsBody?.isDynamic = true
        onObject.physicsBody?.mass = 3
        onObject.physicsBody?.angularDamping = 1
        onObject.physicsBody?.angularVelocity = ballRotation
        onObject.physicsBody?.applyAngularImpulse(ballRotation)
        onObject.physicsBody?.restitution = 0.5

        let particles = SKEmitterNode(fileNamed: "emitter.sks")
        particles?.zPosition = onObject.zPosition - 1
        particles?.particleZPosition = onObject.zPosition - 1
        particles?.position = CGPoint(x: 0, y: 0)
        particles?.targetNode = self
        particles?.particlePositionRange.dx = onObject.size.width
        particles?.particlePositionRange.dy = onObject.size.height
        particles?.name = "particles"
        particles?.isUserInteractionEnabled = false

        onObject.addChild(particles!)

但如果我触摸发射器,即使禁用了用户交互,也会触发操作?!

我该怎么办呢?

我已经尝试忽略touch.name(粒子),但它似乎不起作用,因为每当我触摸粒子或其附近的任何地方时,父节点也会得到触摸事件。

我怎么能阻止这个?

我正在检查

中的触摸事件
 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!

        let positionInScene = touch.location(in: self)
        let touchedNodes = self.nodes(at: positionInScene)
        print(touchedNode.name)
if ((touchedNode.name?.range(of: powerUps.POWERUPS)) != nil){
                    print("powerUp Touched")
                }
}

0 个答案:

没有答案