找到儿童SKNode的绝对位置?

fuz*_*oat 6 ios7 sprite-kit sknode

我有一个SKSpriteNode,它是滚动背景(即孩子)的父级.SKSpriteNode不会自动移动,它只会随着滚动背景一起移动.在背景移动时找到SKSpriteNode的绝对位置的最佳方法是什么.

And*_*eev 12

CGPoint positionInScene = [self.scene convertPoint:self.position 
                                                  fromNode:self.parent];
Run Code Online (Sandbox Code Playgroud)

但是,convertPoint:fromNode:相当昂贵,特别是如果你在update方法中使用它.我宁愿只需要添加childNodex位置parentNodex位置:

CGFloat xPosition = self.position.x + self.parent.position.x;
Run Code Online (Sandbox Code Playgroud)

  • 请不要说"相当昂贵"之类的事情,而不与事实(实际测量)有任何联系,或者至少提及与替代品(平均或最差情况)相比它更慢的因素.问题是(不仅仅是)初学者经常会采取这样的建议,并尽可能避免使用这些功能(过早优化,基于传闻不少).当然手动方式会快一点,但我怀疑它几乎在每个用例中都会有所不同. (4认同)
  • 添加像这样的x位置不考虑zRotation但convertPoint这样做. (2认同)