【问题标题】:Finding absolute position of child SKNode?查找子 SKNode 的绝对位置?
【发布时间】:2014-02-18 12:02:18
【问题描述】:

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

【问题讨论】:

    标签: ios7 sprite-kit sknode


    【解决方案1】:
    CGPoint positionInScene = [self.scene convertPoint:self.position 
                                                      fromNode:self.parent];
    

    但是,convertPoint:fromNode: 相当昂贵,尤其是如果您在update 方法中使用它。我宁愿只是将childNodex 位置添加到parentNodex 位置:

    CGFloat xPosition = self.position.x + self.parent.position.x;
    

    【讨论】:

    • 谢谢安德烈,我之前正在做你提到的添加,但正在尝试 convertPoint:toNode: 我会更好地查看并让它工作。最终我会听取你的建议并使用 add,因为我确实想在 update 中使用它。非常感谢。
    • 请不要在没有任何事实链接(实际测量)的情况下说出诸如“相当昂贵”之类的话,或者至少要提及与替代品相比速度较慢的因素(平均或最差情况)。问题是(不仅仅是)初学者会经常接受这样的建议,并尽可能避免使用这些功能(过早的优化,基于传闻不少)。当然,手动方式会更快一些,但我怀疑它对几乎每个用例都会产生任何影响。
    • 像这样添加 x 位置不考虑 zRotation 但 convertPoint 会。
    • 另外第二种方式不通过父链递归,所以它只适用于场景节点子节点的节点子节点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2016-08-18
    相关资源
    最近更新 更多