【发布时间】:2018-09-20 02:23:41
【问题描述】:
我有一个使用 SceneKit 和 swift 构建的游戏。
我have 被struggling 到figure 出how 到solve 我的problem。
我试图弄清楚如何在我的特定场景中检测节点接触。下图展示了我面临的问题...如果用户触摸了 任何 个黄色立方体,它将突出显示整个黄色立方体链。底部的三个红色立方体和顶部的两个红色立方体也是如此。
游戏的运作方式是给用户一个立方体形状。形状可以通过用户以各种方式滑动来改变位置。立方体可能会出现或从场景中移除,因此立方体的位置可以轻松更改。最后,当用户滑动形状时,重力功能会将立方体拉到地面上,所以如果他们将下面的图像向右扭转,那么它最终会变成一个全新的形状,大部分立方体都在一个新的位置。
这是我尝试过的:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!
let location = touch.location(in: gameView)
let hitList = gameView.hitTest(location, options: nil)
if let hitObject = hitList.first {
let node = hitObject.node
//This is where I'm trying to detect the nodes and remove them
gameScene.rootNode.childNodes.filter({ $0.name == node.color }).forEach({ $0.removeFromParentNode() })
}
}
我的代码的问题是它删除了 所有 与命中立方体颜色相同的立方体。
【问题讨论】:
-
反对者愿意发表评论吗?我在问一个非常具体的问题,我提供了最少的完整代码,你觉得什么地方太宽泛了?
标签: ios swift collision-detection scenekit