0
그래서 내 게임에서 화면 위쪽에서 항목이 떨어지고 플레이어 (다른 스프라이트)가 항목을 잡으면 항목이 사라지고 카운터에 하나가 추가됩니다.충돌 검사 문제
이 내가 대상이 내 옆에 방법 내가 다음 targetstodelete에서 아무것도 삭제로 인해 targetstodelete에 추가되었는지 확인하는 CCLOG을 추가
//WHEN THE THINGS COLLIDE, THEY DISSAPEAR
- (void)update:(ccTime)dt {
CGSize winSize = [[CCDirector sharedDirector] winSize];
NSMutableArray *targetsToDelete = [[NSMutableArray alloc] init];
for (CCSprite *target in _targets) {
CGRect targetRect = CGRectMake(
target.position.x - (target.contentSize.width/2),
target.position.y - (target.contentSize.height/2),
target.contentSize.width,
target.contentSize.height);
BOOL playerHit = FALSE;
CGRect playerRect = CGRectMake(
_Banker.position.x - (_Banker.contentSize.width/2),
_Banker.position.y - (_Banker.contentSize.height/2),
_Banker.contentSize.width,
_Banker.contentSize.height);
if (CGRectIntersectsRect(playerRect, targetRect)) {
//[targetsToDelete addObject:target];
playerHit = TRUE;
[targetsToDelete addObject:target];
break;
}
for (CCSprite *target in targetsToDelete) {
[_targets removeObject:target];
[self removeChild:target cleanup:YES];
_targetsDestroyed++;
[_label setString:[NSString stringWithFormat:@""]];
if (_targetsDestroyed > 30) {
GameWinScene *gameWinScene = [GameWinScene node];
_targetsDestroyed = 0;
[[CCDirector sharedDirector] replaceScene:gameWinScene];
} else{
NSString *killcounttext = [NSString stringWithFormat:@"Catches: %i", _targetsDestroyed];
self.label = [CCLabelTTF labelWithString:killcounttext fontName:@"Zapfino" fontSize:20];
_label.color = ccc3(225,225,225);
_label.position = ccp(winSize.width * 0.20,winSize.height * 0.92);
[self addChild:_label];
}
}
if (targetsToDelete.count > 0) {
[targetsToDelete addObject:target];
}
[targetsToDelete release];
}
}
방법
확인 내 충돌이다. CCLOG는 대상이 추가되고 있지만 삭제되지는 않았 음을 확인했습니다.이 어떤 도움에 감사드립니다 그러나 다만 어떤 사람들처럼 "객관적 - C를 배울 이동"말을하지 마십시오 내 삭제 방법
for (CCSprite *target in targetsToDelete) {
[_targets removeObject:target];
[self removeChild:target cleanup:YES];
_targetsDestroyed++;
[_label setString:[NSString stringWithFormat:@""]];
if (_targetsDestroyed > 30) {
GameWinScene *gameWinScene = [GameWinScene node];
_targetsDestroyed = 0;
[[CCDirector sharedDirector] replaceScene:gameWinScene];
} else{
NSString *killcounttext = [NSString stringWithFormat:@"Catches: %i", _targetsDestroyed];
self.label = [CCLabelTTF labelWithString:killcounttext fontName:@"Zapfino" fontSize:20];
_label.color = ccc3(225,225,225);
_label.position = ccp(winSize.width * 0.23,winSize.height * 0.92);
[self addChild:_label];
}
}
입니다 :/
그 다음 방법으로 CCSprite 대상이 targetsToDelete에 있는지 확인하고, 그렇다면 장면에서 대상을 제거합니다. – tyler53
이 루프에서 대상을 얻습니다 (targetsToDelete에서 CCSprite * 대상) { [_targets removeObject : target]; [self removeChild : target cleanup : YES]; ....... 다시 targetToDelete에 대상을 추가하지만 targetsToDelete에서 대상을 제거하고 마지막으로 릴리스 된 [targetsToDelete release] 코드는 없습니다. , 그렇다면 무엇이 의미인가 (targetsToDelete.count> 0) { [targetsToDelete addObject : target]; } – Devang