0

I 예를 스프라이트를 제거하고, 두 번째 스프라이트와 충돌 할 때 다음, 그 스프라이트의 아이가 제거 된 후 :BoundingBox의 여전히 아이가

if (CGRectIntersectsRect(spriteOne.boundingBox, self.swat.boundingBox)) 
    { 
     if (spriteOne.tag == 0){ 
      [self removeChild:spriteOne cleanup:YES]; 
     } 
     if (spriteOne.tag == 1){ 
      [self removeChild:spriteOne cleanup:YES]; 
     } 
} 

이 내가 그것을 원하는, 그리고 어떻게 작동 스프라이트가 화면에서 사라집니다. 그러나 boundingBox는 이미지가 아니더라도 여기에 계속 남아있는 것으로 보이는데, 이는 스코어링 등으로 문제를 일으키는 것 같습니다. 그래서, 스프라이트의 boundingBox를 '비활성화'하는 방법을 알고 싶습니다. 두 스프라이트가 처음으로 콜드 될 때, 충돌은 감지되지만, 그 후 언제든지 그렇지 않습니다. 사전에

감사합니다.

+0

방법 "경계 상자가 여전히"표출 않습니다를? 어떤 오류를 관찰하고 있습니까? – YvesLeBorg

+0

두 개의 스프라이트가 충돌 할 때, 나는 점수를 +1하는 방법을 호출합니다. 첫 번째 충돌이 발생하면 점수에 +1이 추가되고 첫 번째 스프라이트가 사라집니다. 그러나 첫 번째 스프라이트가 '사망'한 지점을 두 번째 스프라이트가 가리킬 때마다 추가 포인트가 추가됩니다. – akuritsu

답변

0

내가 아는 한, 충돌 후 스프라이트를 제거하는 데 문제가 발생합니다.

시도해 보시겠습니까?

if (CGRectIntersectsRect(spriteOne.boundingBox, self.swat.boundingBox)) 
{ 
    if (spriteOne.tag == 0){ 
     [spriteOne removeFromParentAndleanup:YES]; 
    } 
    if (spriteOne.tag == 1){ 
     [spriteOne removeFromParentAndleanup:YES]; 
    } 
} 

일부 NSLog 추적을 추가하여 스프라이트가 실제로 제거되었는지 확인해 보셨습니까?

0

spriteOne을 유지해야합니다. 주위를 유지하는 좋은 이유가있는 경우,이 작업을 수행 : 다시 플레이 spriteOne을 필요로 할 때

if (spriteOne.visible && CGRectIntersectsRect(spriteOne.boundingBox, self.swat.boundingBox)) 
{ 
    if (spriteOne.tag == 0){ 
     spriteOne.visible=NO; 
    } 
    if (spriteOne.visible && spriteOne.tag == 1){ 
     spriteOne.visible=NO; 
    } 
} 

이후, 단지 YES로 가시성을 설정; 그렇지 않으면

, 당신은 누수가,이 수행

if (spriteOne && CGRectIntersectsRect(spriteOne.boundingBox, self.swat.boundingBox)) 
{ 
    if (spriteOne.tag == 0){ 
     [self removeChild:spriteOne cleanup:YES]; 
     self.spriteOne=nil; // assumes you have a property for spriteOne 
    } 
    if (spriteOne && spriteOne.tag == 1){ 
     [self removeChild:spriteOne cleanup:YES]; 
     [spriteOne release]; // assumes no property for spriteOne 
     spriteOne=nil;   // dont forget this ! beware of zombies 
    } 
}