【问题标题】:iOS enumerateChildNodeswithName to access ALL physics bodiesiOS enumerateChildNodeswithName 访问所有物理体
【发布时间】:2016-04-06 07:57:53
【问题描述】:

我正在编写一个辅助方法来显示 iOS 上 SpriteKit 应用中所有物理交互(碰撞和接触)的摘要。

我有一个简单的场景,有一个边界(来自 self.physicsBody = SKPhysicsBody(edgeLoopFromRect: frame))和 3 个简单的形状(2 个正方形和一个圆形),它们通过 addChild() 添加到场景中

在我的辅助函数中,我想搜索所有节点,如果它们有物理体,打印它们的类别、碰撞和接触测试位掩码。

如果我编写以下代码:

enumerateChildNodesWithNeme("*") { node, _ in {
   print("Node: \(node.name)")
}

那么我只列出了 3 个形状:

Node: Optional("shape_blueSquare")
Node: Optional("shape_redCircle")
Node: Optional("shape_purpleSquare")

我的场景的physicsBody 没有返回。但如果我使用:

enumerateChildNodesWithNeme("..") { node, _ in {
   print("Node: \(node.name)")
}

然后我得到:

Node: Optional("shape_edge") 

如果我使用:

enumerateChildNodesWithNeme("..//") { node, _ in {
   print("Node: \(node.name)")
}

我什么也没得到,而我认为这会将节点树向上移动到场景,然后递归返回所有子节点。搜索参数 "//*" 也只返回 3 个孩子。

skView.showNodecount = true 显示的节点数一直是4

所以我的问题是:是否有 enumerateChildNodesWithName 的搜索参数将返回场景中的所有节点(包括场景本身)或者我误解了场景与其子节点之间的关系,因为单个搜索无法搜索两个都?可能是后者,因为 print("\(parent.children)") 返回 nil,而我原本希望看到 self 或类似的一些变体。

【问题讨论】:

  • 如果这是它的工作方式,并且我的代码将找到除场景物理体之外的所有物理体,那很好 - 我可以单独处理。我只是想确保我不会遗漏任何其他东西。
  • 打印print("\(parent.children)") 之类的内容总是以 nil 结尾。我假设在这里,隐式自我是GameScene 或类似的东西。你得到了 nil,因为 (according to the docs),场景是根节点,所以它不能有父节点。例如,您不能从其父场景中删除场景(self.parent 属性始终为 nil,当 self 是当前场景时)因此类似 self.removeFromParent() 的内容无效。
  • @Whirlwind - 有道理 - 谢谢。
  • 不客气。您是否尝试过我发布的代码作为答案?对你有用吗?
  • 我做到了,它做到了——只是标记了你的答案——谢谢。

标签: ios sprite-kit skspritenode skscene


【解决方案1】:

这对我有用:

enumerateChildNodesWithName("//.") { (node, _) -> Void in
     print("Node: \(node.name)")
}

关于//

当放置在搜索字符串的开头时,这指定了 搜索应该从根节点开始并递归执行 跨越整个节点树。

关于.

引用当前节点。

这也可能对你有用(如果你想找到给定矩形内的所有物理实体):

self.physicsWorld.enumerateBodiesInRect(frame) { (body, _) -> Void in
    print(body.node?.name)
}

【讨论】:

  • 刚刚在回家的火车上尝试过,它成功了 - 非常感谢?。不相信 // 和 .不过,运算符在这种情况下是合乎逻辑的。
猜你喜欢
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
  • 2022-08-21
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多