エミッターを子として 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!)
しかし、エミッターに触れると、ユーザーインタラクションが無効になっていてもアクションがトリガーされますか?!
どうすれば修正できますか?
私はすでに touched.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")
}
}