如何在Swift中使用Scene Kit获取名称中的所有子节点

我正在尝试开发一个基本游戏,我有一个场景,其中有几个子节点添加到根节点.每个节点都有两个名称之一,朋友或敌人.

如果用户触摸其中一个敌人节点,我想删除所有名为敌人的子节点.

我尝试了几件事,但似乎无法正常工作.

在我的touchesBegan功能:

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 doesn't work
      gameScene.rootNode.childNodes(passingTest: { (node,UnsafeMutablePointer<ObjCBool>) -> Bool in 
      node.removeFromParentNode()
   } 
}

我也试过使用gameScene.rootNode.enumerateChildNodes(withName :),但我也无法使用它.

我可以得到的是,如果我在那里做这样的事情:

if node.name == "enemy" {
    node.removeFromParentNode()
}

但是,这只会删除被击中的单个节点,而不是所有节点.如何在Swift with Scene Kit中获取具有特定名称的所有子节点?

过滤掉具有匹配名称的节点,并将其从父节点中删除:
gameScene.rootNode.childNodes.filter({ $0.name == "Enemy" }).forEach({ $0.removeFromParentNode() })

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...