我正在尝试开发一个基本游戏,我有一个场景,其中有几个子节点添加到根节点.每个节点都有两个名称之一,friend或者enemy.
如果用户触摸其中一个enemy节点,我想删除所有已命名的子节点enemy.
我尝试过几件事,但似乎无法正常工作.
在我的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()
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用,gameScene.rootNode.enumerateChildNodes(withName:)但我也无法使用.
我可以得到的是,如果我在那里做类似的事情:
if node.name == "enemy" {
node.removeFromParentNode()
}
Run Code Online (Sandbox Code Playgroud)
但是,这只会删除被击中的单个节点,而不是所有节点.如何在Swift with Scene Kit中获取具有特定名称的所有子节点?
过滤掉具有匹配名称的节点,并从父节点中删除它们:
gameScene.rootNode.childNodes.filter({ $0.name == "Enemy" }).forEach({ $0.removeFromParentNode() })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3571 次 |
| 最近记录: |