ios - 检测触摸节点任意一侧的节点

标签 ios swift collision-detection scenekit

我有一个使用 SceneKit 和 swift 构建的游戏。

havestrugglingfigurehowsolve我的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() })
   } 
}

我的代码的问题是它删除了所有与命中立方体颜色相同的立方体。

enter image description here

最佳答案

我不会使用 SceneKit API 来解决这个问题。

您有一个带有立方体的游戏,可以根据特定的限制进行排列。应用程序应该有每个立方体所在位置的模型(抽象表示),并且立方体的绘图只是该模型的 View 。涉及游戏玩法的所有内容,包括解析哪些立方体是相同颜色链的一部分,都应该在该抽象表示上完成,然后对立方体状态的任何更新都应该传播到 SceneKit 节点层次结构。

关于ios - 检测触摸节点任意一侧的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49754081/

相关文章:

iphone - 方法完成后执行代码

ios - HTTPBody - Swift POST 请求 - 推特

swift - 在 Swift 中将字符串的 Realm 列表转换为字符串数组

ios - UICollectionView 弹回后刷新时消失

optimization - 如何优化我的基本物理模拟器?

javascript - 使用 filter() 检查碰撞?

ios - UIcollectionview 更新单元格高度

ios - iCloud + Core Data - 如何避免预填充数据重复?

data-structures - 应该使用什么技术来修剪 2d 碰撞检查?

ios - Gcm iOS,订阅主题,错误码3004