如何在Swift中使用Scene Kit获取名称中的所有子节点
发布时间:2020-12-14 05:29:06 所属栏目:百科 来源:网络整理
导读:我正在尝试开发一个基本游戏,我有一个场景,其中有几个子节点添加到根节点.每个节点都有两个名称之一,朋友或敌人. 如果用户触摸其中一个敌人节点,我想删除所有名为敌人的子节点. 我尝试了几件事,但似乎无法正常工作. 在我的touchesBegan功能: override func
我正在尝试开发一个基本游戏,我有一个场景,其中有几个子节点添加到根节点.每个节点都有两个名称之一,朋友或敌人.
如果用户触摸其中一个敌人节点,我想删除所有名为敌人的子节点. 我尝试了几件事,但似乎无法正常工作. 在我的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() }) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |