SCNParticleSystem не добавляется в SCNNode при прикосновениях - PullRequest
0 голосов
/ 01 мая 2019

Я размещаю несколько SCNNode в моем представлении о загрузке моего приложения.При прикосновении я начал удалять все узлы, на которые постучали.

Пока все это работает, так что я знаю, что мой код работает, но простое добавление SCNParticleSystem вызывает у меня проблемы.

Я поставил две звезды (**) по линиям, которые не являютсяработает

 // On tap
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    // Register tap
    let touch = touches.first!
    // Get location
    let location = touch.location(in: sceneView)
    // Create a hit
    let hitList = sceneView.hitTest(location, options: nil)

    if let hitObject = hitList.first {
        // Get node from hit
        let node = hitObject.node
        if node.name == target {
            score += 3
            playAudio(fileName: "two")
            **let explosion = SCNParticleSystem(named: "stars.scnp", inDirectory: nil)
            **node.addParticleSystem(explosion!)
            node.removeFromParentNode()
            // Async call
            DispatchQueue.main.async {
                node.removeFromParentNode()
                self.scoreLabel.text = String(self.score)
            }
        }
    }
}

Как мне прикрепить частицу к узлу?

1 Ответ

1 голос
/ 02 мая 2019

Если вы хотите увидеть взрыв и удалить узел, просто установите таймер ожидания, например:

let explosion = SCNParticleSystem(named: "stars.scnp", inDirectory: nil)
node.addParticleSystem(explosion!)

let waitAction = SCNAction.wait(duration: 3)
node.runAction(waitAction, completionHandler: {
    self.node.removeFromParentNode()
    self.scoreLabel.text = String(self.score)
})

Вы можете опубликовать действие ожидания на любом узле, поэтому, если у вас есть центральный узелв сцене это тоже будет работать

...