Я использую лист спрайта с 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.
может любой кто-нибудь знает, как это сделать?
i dnt так считают. есть ли способ обнаружить, какой спрайт в листе спрайта встречается с балком – KsK
да, вы можете это сделать, добавив весь спрайт в NSMutableArray, а затем проверите столкновение между монстром (в данном случае это бейсбол) и спрайтами в массив. когда Collision будет обнаружен, из индекса массива вы можете получить спрайт, который находится в состоянии столкновения. – Renaissance
вам просто нужно изменить код обнаружения столкновения. – Renaissance