删除节点下面的节点后,节点不移动

时间:2018-10-09 17:03:16

标签: ios swift scenekit game-physics swift4.2

我正在尝试创建一个Jenga游戏,首先学习如何使用SceneKit

我已经设置了场景中的所有物理场(左图-block.scn | 右图-Scene.scn的图像现场):

enter image description here

右边的块没有直接设置物理特性,因为它们是参考节点,因此添加物理特性将使其不再正常工作。 (这三个块刚刚移到一边,以允许结构掉落。)

当我运行该应用程序时,这些块会掉落并按预期方式运行。但是,当我尝试删除节点时会出现问题。这是它的样子,然后here is a link to the video看看正在发生什么:

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 :(得分:0)

这花了很长时间才弄清楚,我要做的就是将allowsResting更改为false,如代码和场景编辑器所示:

node.physicsBody?.allowsResting = false

enter image description here

您只需要做一项,就无需更改两者。