Узлы не двигаются при удалении узла под ними - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь создать игру Jenga, чтобы начать с изучения, как использовать SceneKit.

Я установил все физику в моих сценах, как и так (Левое изображение -block.scn | Правое изображение - Scene.scn с изображением сцены):

enter image description here

Блоки наПраво не имеет физику, установленную непосредственно к ним, поскольку они являются ссылочными узлами, поэтому добавление физики заставит это больше не работать должным образом.(Три блока были только что сдвинуты в сторону, чтобы позволить структуре упасть.)

Когда я запускаю приложение, блоки падают и действуют, как и ожидалось.Однако проблема возникает, когда я пытаюсь удалить узел.Вот как это выглядит, и вот ссылка на видео , чтобы увидеть, что происходит:

enter image description here

Во времявидео, я удалил блок , так как физика происходила и другие блоки упали, как и ожидалось, но после этого ничего не произошло после удаления большего количества блоков.

Я удаляю блоки, используя node.removeFromParentNode():

// MARK: Respond to touch events
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    // Get the touch in the view
    let touch = touches.first!
    let location = touch.location(in: gameView)
    let hitList = gameView.hitTest(location, options: nil)

    // Perform operation on tapped object
    if let hitObject = hitList.first {
        let node = hitObject.node

        if node.name == "block" {
            node.removeFromParentNode()
        }
    }
}

Почему это происходит и как я могу это исправить?


Если у вас есть какие-либо вопросы, пожалуйста, задавайте!

1 Ответ

0 голосов
/ 10 октября 2018

Глупо потребовалось много времени, чтобы понять, что все, что мне нужно было сделать, это изменить allowsResting на false, как показано здесь в коде и в редакторе сцены:

node.physicsBody?.allowsResting = false

enter image description here

Вам нужно сделать только один, не нужно менять оба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...