我有一个精灵表,其中有四个图像(bat1,bat2,bat3.bat4),在图像中有一个拿着球棒的人,当所有图像在动画中组合时,它看起来就像在打棒球。下面是我用来添加精灵表的代码。
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"baseball.plist"];
spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"baseball.plist"];
[self addChild:spriteSheet];
background = [CCSprite spriteWithSpriteFrameName:@"bat4.png"];
background.position = ccp(220, 185);
background.tag = 10;
[self addChild:background];
for(int i = 1; i < 5; i++) {
[walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"bat%d.png", i]]];
}
CCAnimation *walkAnim = [CCAnimation animationWithSpriteFrames:walkAnimFrames delay:5.0f];
self.walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim]];
[background runAction:_walkAction];
我正在检测球与球棒的碰撞。通过下面的代码
for (CCSprite *monster in _monsters) {
if (CGRectIntersectsRect(background.boundingBox, monster.boundingBox)) {
if (((background.position.x -5 > monster.position.x + (monster.contentSize.width/2)) && background.position.y > monster.position.y)) {
isCollision = 1;
[monstersToDelete addObject:monster];
}
// [monstersToDelete addObject:monster];
//[self addFishToBoat];
}
}
这里发生的情况是检测到碰撞,但它总是检测到与 bat4 的 rect 的碰撞。因为 bat 正在移动并且所有 bat 的 cgrect 都不同,所以即使 bas 离 bat1 很远,它也会检测到碰撞,因为球的rect 将与 bat4 的 rect 相交。
但我希望只有当球与不同的球棒发生碰撞时才会检测到碰撞,我的意思是当球与 bat1、bat2、bat3、bat4 碰撞时,只有它会检测到碰撞,而不是总是用 bat4 检测