首页 > 解决方案 > 删除节点下方的节点时节点不移动

问题描述

我正在尝试创建一个 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()
        }
    }
}

为什么会发生这种情况,我该如何解决?


如果您有任何疑问,请询问!

标签: iosswiftscenekitgame-physicsswift4.2

解决方案


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

node.physicsBody?.allowsResting = false

在此处输入图像描述

你只需要做一个,不需要改变两个。


推荐阅读