0
스프라이트와 연관된 b2body를 제거하는 방법이 있습니까? 스프라이트는 화면에 나타나야하지만 물리는 사용하지 않아야합니다.b2body를 cocos2d 스프라이트에서 제거
저는 cocos2d Box2d를 사용하고 있습니다.
스프라이트와 연관된 b2body를 제거하는 방법이 있습니까? 스프라이트는 화면에 나타나야하지만 물리는 사용하지 않아야합니다.b2body를 cocos2d 스프라이트에서 제거
저는 cocos2d Box2d를 사용하고 있습니다.
우리는 스프라이트를 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;
}
}
본문에 접합부가 있습니다. 나는 이것이 이유라고 생각한다. 몸은 파괴되지 않는다. – Alisa
예, 먼저 본문과 관련된 모든 것을 삭제 한 다음 해당 본문을 제거해야합니다. 그렇게하지 않으면 exc_bad_access 오류 신호를받을 가능성이 있습니다. – Renaissance