SpriteKit:确定命中测试的绘制顺序

时间:2015-04-21 14:46:40

标签: sprite-kit hittest skeffectnode skcropnode

我正在使用Spritekit并希望进行命中测试,这是直观的。 换句话说:我得到了一个位置x,y,并想知道哪个是最受欢迎的节点。 (并且“最顶层”是指用户实际看到的最顶层的那个。)

我没有找到SpriteKit的任何预定义功能,它给了我这个功能。 实际上我发现SpriteKit本身使用了一些反直觉命中测试,see here

我自己实现这个想法的想法是计算一些全局z排序,如DobroćudniTapir在答案here中所描述的那样。

我认为这可能有用,令我困惑的是文档中的陈述:

  

重要说明:SKCropNode和SKEffectNode节点类会改变场景渲染行为。这些节点的子节点作为单独的节点树独立呈现,结果将呈现到包含裁剪或效果节点的树中。有关更多信息,请参阅使用其他节点类型。

在“了解节点树的绘图顺序”下面找到here

我没有找到引用的“使用其他节点类型”这一点,所以我不知道SKCropNodes或SKEffectNodes应该如何以及为什么要改变绘图顺序......

所以对以下问题的回答可以帮助我:

  • SpriteKit是否提供了一些检索绘图的功能?
  • 如果没有,您认为我的自定义实现有效吗? (裁剪或效果节点如何破坏它?)
  • 你能指点我这个问题的信息吗?就像缺少“使用其他节点”一文一样?

更新

我刚发现报告的行为here不正确。

正如评论中所提到的,我指向了nodeAtPosition或nodesAtPosition。我使用here中的代码进行了测试。

结果并不令人满意。两个问题:

  1. 在nodesAtPosition中忽略set zPosition。如果前面有蓝色或红色正方形,则我在nodesAtPosition中返回的数组中获得相同的顺序。
  2. 这些功能使用累积的帧。但在一个完美的情况下,我想使用每个节点的确切大小而不是累积的帧。
  3. 有些图片为1.: enter image description here

    enter image description here

0 个答案:

没有答案