2013-08-30 5 views
0

스프라이트와 연관된 b2body를 제거하는 방법이 있습니까? 스프라이트는 화면에 나타나야하지만 물리는 사용하지 않아야합니다.b2body를 cocos2d 스프라이트에서 제거

저는 cocos2d Box2d를 사용하고 있습니다.

답변

1

우리는 스프라이트를 b2body의 사용자 데이터로 제공합니다. 그래서 특정 스프라이트가있는 몸체를 사용자 데이터로 제거하고자하는 경우, 현재 세계에 존재하는 모든 몸체를 통과 한 다음 하나씩 비교해야합니다. 그리고 그 몸체를 발견하면 해당 몸체를 제거해야합니다. CCSprite * temp에 해당하는 본문을 삭제하려고한다고 가정 해 보겠습니다.

for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) { 
if (b->GetUserData() != NULL) { 
      CCSprite *sprite = (CCSprite *)b->GetUserData();  
      if (sprite==temp) { 
       world->destroyBody(b); 
       break; 
      } 
} 
+0

본문에 접합부가 있습니다. 나는 이것이 이유라고 생각한다. 몸은 파괴되지 않는다. – Alisa

+0

예, 먼저 본문과 관련된 모든 것을 삭제 한 다음 해당 본문을 제거해야합니다. 그렇게하지 않으면 exc_bad_access 오류 신호를받을 가능성이 있습니다. – Renaissance

관련 문제