当节点下方的节点被移除时,节点不会移动
Nodes not moving when the node underneath them is removed
我正在尝试创建一个 Jenga 游戏,以开始学习如何使用 SceneKit
。
我已经在我的场景中设置了 所有 物理,因此(左图 - block.scn
| 右图 - Scene.scn
附现场图片):
右边的块没有直接设置物理,因为它们是参考节点,因此添加物理将使其不再正常工作。 (这三个方块刚刚被移到一边以允许结构掉落。)
当我 运行 应用程序时,块落下并按预期运行。但是,当我尝试删除节点时出现问题。这是它的样子,here is a link to the video 看看发生了什么:
在视频中,我移除了一个方块 因为 物理现象正在发生并且其他方块按预期下降,但之后移除更多方块后没有任何反应。
我使用 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()
}
}
}
为什么会发生这种情况,我该如何解决?
有什么问题欢迎提问!
这花了很长时间才弄清楚我需要做的就是将 allowsResting
更改为 false
,如代码和场景编辑器中所示:
node.physicsBody?.allowsResting = false
你只需要做一个,不需要两个都改。
我正在尝试创建一个 Jenga 游戏,以开始学习如何使用 SceneKit
。
我已经在我的场景中设置了 所有 物理,因此(左图 - block.scn
| 右图 - Scene.scn
附现场图片):
右边的块没有直接设置物理,因为它们是参考节点,因此添加物理将使其不再正常工作。 (这三个方块刚刚被移到一边以允许结构掉落。)
当我 运行 应用程序时,块落下并按预期运行。但是,当我尝试删除节点时出现问题。这是它的样子,here is a link to the video 看看发生了什么:
在视频中,我移除了一个方块 因为 物理现象正在发生并且其他方块按预期下降,但之后移除更多方块后没有任何反应。
我使用 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()
}
}
}
为什么会发生这种情况,我该如何解决?
有什么问题欢迎提问!
这花了很长时间才弄清楚我需要做的就是将 allowsResting
更改为 false
,如代码和场景编辑器中所示:
node.physicsBody?.allowsResting = false
你只需要做一个,不需要两个都改。