Я пытаюсь создать игру Jenga, чтобы начать с изучения того, как использовать SceneKit
.
Я установил всю физику в своих сценах следующим образом (левое изображение — block.scn
| правое изображение — Scene.scn
с изображением сцены):
Для блоков справа не задана физика напрямую, так как они являются опорными узлами, поэтому добавление физики приведет к тому, что они больше не будут работать должным образом. (Три блока только что были перемещены в сторону, чтобы конструкция могла упасть.)
Когда я запускаю приложение, блоки падают и ведут себя так, как ожидалось. Однако проблема возникает, когда я пытаюсь удалить узел. Вот как это выглядит, и вот ссылка на видео, чтобы посмотреть, что происходит:
Во время видео я удалил блок, когда происходила физика, и другие блоки упали, как и ожидалось, но после этого после удаления других блоков ничего не произошло.
Я удаляю блоки с помощью 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()
}
}
}
Почему это происходит и как это исправить?
Если у вас есть вопросы, задавайте!