答案 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
}
}