0

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のバウンディングボックスを使用して常に交差をチェックするため、衝突が発生します。しかし、現在のスプライトフレームの四角形との交点をチェックしたい..

誰でもやり方を教えてください。

4

1 に答える 1