【问题标题】:Change Box2D Anchor Point?更改 Box2D 锚点?
【发布时间】:2011-11-06 06:29:44
【问题描述】:

在 Cocos2D 中,我正在使用 (0,1) 的锚点创建我的 CCSprite,这与 UIKit 的做法类似。无论如何,我正在尝试更改 Box2D 中的锚点,这可能吗? 如果是这样,我将如何使用 (0,1) 的锚点来做到这一点?

谢谢!

【问题讨论】:

    标签: ios cocos2d-iphone box2d points


    【解决方案1】:

    Box2D 实体没有锚点。

    anchorPoint 是节点纹理相对于节点位置的偏移量。 Box2D 物体没有纹理,因此没有锚点。

    一般来说,通过将anchorPoint 从其默认的0.5,0.5 位置更改,您将会使很多事情变得更加困难。例如,导致您提出这个问题的问题。

    【讨论】:

    • 嗯,我是通过这个链接跑的:box2d.org/forum/viewtopic.php?f=3&t=3612&p=17877#p17877 他们说有可能,所以在你看了那个链接之后,你认为还有可能吗?
    • 是的,您可以偏移形状,但没有简单的属性,您必须将此偏移添加到每个 Box2D 主体以匹配相应精灵的锚点偏移。坚持使用 cocos2d 锚点会容易得多,而不是试图让 cocos2d 表现得像 UIKit。另请参阅此说明:stackoverflow.com/questions/7808981/…
    • 我明白了。这是一个很好的解释。所以如果我使用常规的 0.5,0.5 锚点,我会弄乱我的精灵的位置,因为我习惯了 UIKit。有没有什么方法可以将 UIKit 位置坐标转换为 Cocos2D 坐标?
    • 你可以像这样将 uikit 坐标转换为 cocos2d: node.position = CGPointMake(uikitPos.x + node.contentSize.width * node.anchorPoint.x, uikitPos.y - node.contentSize.height * node.anchorPoint.y);您可能希望将其包装到辅助方法或 CCNode 类别方法中。
    • 谢谢!我一定会这样做,并将锚点留在 0.5,.5。感谢您的帮助和接受的答案!
    【解决方案2】:

    改变身体形状的锚点:

    做一个for循环得到最小的x顶点和最大的,减去得到宽度,你可以在同一个循环中得到最小的y顶点和最大的和减去,

    如果您随后移动所有具有差异的顶点,您会将形状定位在 0,0 中。

    不确定是否是最佳解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2012-02-24
      相关资源
      最近更新 更多