我正在制作一款游戏,其中一个角色有一些动画,如奔跑、跳跃等,
有没有办法在动画时检测碰撞?因为它在空闲状态、运行状态和跳跃状态时都在改变它的形状。
在寻找解决方案时,我创建了这两个Sprite Helper
我正在制作一款游戏,其中一个角色有一些动画,如奔跑、跳跃等,
有没有办法在动画时检测碰撞?因为它在空闲状态、运行状态和跳跃状态时都在改变它的形状。
在寻找解决方案时,我创建了这两个Sprite Helper
最好的方法是为精灵定义自己的边界框,并确定一个特定的大小来测试它与关卡中的其他形状。
否则,您可以使用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
}
}