如何在box2d中检测动画ccsprite的碰撞

时间:2013-10-18 13:29:33

标签: cocos2d-iphone box2d-iphone box2dweb

我制作的游戏中角色有一些动画,如跑步,跳跃等等,

有没有办法在动画时检测碰撞?因为它在处于空闲状态,运行状态和跳跃状态时会改变其形状。

当我搜索解决方案时,我创建了这两个Sprite Helper

Physics Editor

1 个答案:

答案 0 :(得分:0)

最好的方法是为精灵定义你自己的边界框,并决定一个特定的大小来测试你级别中的其他形状。

否则你可以使用属性sprite.boundingBox,它将返回实际精灵的CGRect,但我认为这与根据CCNode树的当前变换堆栈有关。它可以在许多情况下工作,但如果根据动画阶段的大小变化太大,则无效。

因此,选择一个特定的边界框:

CGSize playerBounds = CGSizeMake(20,20);
CGRect bound = CGRectMake(player.position.x, player.position.y, playerBounds.width, playerBounds.height);
// or CGRect bound = player.boundingBox

根据您的等级进行测试:

for (CCSprite *levelPiece in pieces.children) {
  if (CGRectIntersectsRect(bound, levelPiece.boundingBox)) {
    // they're colliding
  }
}