0

我正在制作一款游戏,其中一个角色有一些动画,如奔跑、跳跃等,

有没有办法在动画时检测碰撞?因为它在空闲状态、运行状态和跳跃状态时都在改变它的形状。

在寻找解决方案时,我创建了这两个Sprite Helper

物理编辑器

4

1 回答 1

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
  }
}
于 2013-10-18T13:37:15.197 回答