swift - enumerateChildNodes 是否对孙子进行排序?
问题描述
我没有使用物理体来检测碰撞,而是简单地使用 enumerateChildNodes 来检查 SKSpriteNodes 是否相交。当 SKSpriteNodes 都是场景的孩子时,它对我很有用,但当 SKSpriteNodes 之一是孙子时,它就不起作用了。我尝试在 SKSpriteNode 的名称之前使用 // 和 / 来搜索所有树,但它没有帮助。这是我的代码:
override func didMove(to view: SKView) {
let red = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(10,10))
red.name = "red"
self.addChild(red)
let blue = SKSpriteNode(color: UIColor.blueColor(), size: CGSizeMake(10,10))
blue.name = "blue"
self.addChild(blue)
let green = SKSpriteNode(color: UIColor.greenColor(), size: CGSizeMake(10,10))
green.name = "green"
blue.addChild(green)
}
override func update(_ currentTime: TimeInterval) {
enumerateChildNodes(withName:"red") {node, _ in
let red = node as! SKSpriteNode
if red.frame.intersects((self.childNode(withName:"//blue/green")?.frame)!)
{
red.removeFromParent()
}
}
解决方案
为什么不只是在进行检查时引用蓝色的孩子而不是循环遍历所有层次结构
if red.frame.intersects((blue.childNode(withName: "green")?.frame)!) {
red.removeFromParent()
}
推荐阅读
- javafx - javafx折线图沿网格线展开类别
- docker - 将 $SOURCE_COMMIT 传递给 docker hub 上的 Dockerfile 命令
- javascript - Python 中的 Map 和 Filter 方法
- python - 如何从 python 中的字典中返回特定信息?
- elasticsearch - 相当于 Lucene 查询语法中的 true==true 或 1==1
- python - 用 python 和漂亮的汤从网站上抓取代码
- xpath - 将编码字符转换回用于搜索
- javascript - 监听来自 Vuex 商店的浏览器事件
- django - 使用 charfield 在一篇文章中向数据库添加多个条目
- python - classmethod 可以改变一个类的状态,这是什么意思?