【发布时间】:2013-05-02 06:13:12
【问题描述】:
我正在使用具有 4 个精灵的精灵表。并使用下面的代码添加精灵表。精灵是不同角度的棒球棒,在动画中它们像时钟的针一样移动,但从大约 80 度到 20 度以逆时针方向移动。
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"baseball.plist"];
spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"baseball.plist"];
[self addChild:spriteSheet];
background = [CCSprite spriteWithSpriteFrameName:@"bat1.png"];
background.position = ccp(220, 185);
background.tag = 10;
[self addChild:background];
bat1.png的大小是{113, 135}
bat2.png的大小是{140, 134}
bat3.png的大小是{158, 125}
bat4.png的大小是{172, 110}
下面是动画代码
NSMutableArray *walkAnimFrames = [NSMutableArray array];
NSMutableArray *walkAnimFrames1 = [NSMutableArray array];
if(direction == 1){
for(int i = 1; i < 5; i++) {
[walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"bat%d.png", i]]];
}
}
else{
for(int i = 4; i > 0; i--) {
[walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"bat%d.png", i]]];
}
}
下面是检查碰撞的代码
for (CCSprite *monster in _monsters) {
if (CGRectIntersectsRect(background.boundingBox, monster.boundingBox)) {
(monster.contentSize.height/2));
if (background.position.x -5 > (monster.position.x + monster.contentSize.width/2)) {
isCollision = 1;
[monstersToDelete addObject:monster];
}
}
}
但它总是检测到与 bat1.png 的冲突。但应该检测与精灵帧中当前精灵的碰撞。
通过这段代码,即使精灵远离 bat2.png 也会发生碰撞,因为它总是使用 bat1 的边界框来检查交点。 但我希望它检查与当前 spriteframe 的 rect 的交集..
有人知道怎么做吗?
【问题讨论】:
标签: objective-c ios6 cocos2d-iphone sprite-sheet