【问题标题】:ccSpriteBatchNode child bounding box transformationccSpriteBatchNode 子边界框变换
【发布时间】:2012-10-28 03:46:38
【问题描述】:

我正在使用 cocos2d 1.0.1。

我创建了一个 CCSpriteBatchNode,它包含一个 CCSprite(我们将其命名为 parentLayer),其中包含 X 个子节点(CCSprites)。

问题是 - 当我旋转 parentLayer 时,所有精灵(子)都正确显示,但是边界框在同一个位置(旋转前它们所在的位置),所以这些精灵的世界坐标不会改变。

当然,如果没有 CCSpriteBatchNode,以上所有方法都可以正常工作。但是,由于涉及的精灵数量,我想使用批处理节点。

问题是,有没有办法相应地更新边界框和子位置?

【问题讨论】:

    标签: cocos2d-iphone rotation bounding-box ccspritebatchnode


    【解决方案1】:

    我们在谈论多少个精灵?我只会使用快速枚举调用来单独旋转每个。我从来没有注意到这样做会影响性能,是吗?

    CCArray *listOfChildren = [parentLayer children];
    for (CCSprite *sprite in listOfChildren) {
        [sprite setRotation:someValue];
    }
    

    【讨论】:

    • 感谢您的快速回复。我尝试了这种方法,但它不会改变孩子的坐标。所有的孩子都是方形的,他们的锚点== 0.5f,0.5f,所以他们只会在他们去过的地方旋转。但是,可以将锚点更改为图层的中心然后旋转,但是对于碰撞和其他事情,我将进行相当复杂的计算。
    • 如果有办法将孩子的锚点设置为基于父母的锚点位置,您的解决方案将完美运行。
    猜你喜欢
    • 2013-07-31
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    相关资源
    最近更新 更多