2012-02-14 1 views
0

확인, 메신저 업데이트 Box2D의 내 스프라이트에 몸을 추가 할 수 없습니다, 나는내가 Box2D의에 RW 튜토리얼 다음

내가 할 수있는, 스프라이트에, 확인을 heres 문제를 몸을 추가하는 부분을 가지고있다 '고양이'스프라이트에 스프라이트 본문을 추가하지만 '자동차'스프라이트에 본문을 추가하려고하면 단지 충돌이 발생합니다. '고양이'스프라이트에 본문을 추가하면 작동하지만 정상적으로 작동합니다. '자동차'에 시체를 추가 할 수 있습니까? 둘 다 같은 방법으로 몸을 추가합니다!

는 heres는 본체 첨가하는 방법

- (void)addBoxBodyForSprite:(CCSprite *)sprite { 

b2BodyDef spriteBodyDef; 
spriteBodyDef.type = b2_dynamicBody; 
spriteBodyDef.position.Set(sprite.position.x/PTM_RATIO, 
          sprite.position.y/PTM_RATIO); 
spriteBodyDef.userData = sprite; 
b2Body *spriteBody = _world->CreateBody(&spriteBodyDef); 

b2PolygonShape spriteShape; 
spriteShape.SetAsBox(sprite.contentSize.width/PTM_RATIO/2, 
        sprite.contentSize.height/PTM_RATIO/2); 
b2FixtureDef spriteShapeDef; 
spriteShapeDef.shape = &spriteShape; 
spriteShapeDef.density = 10.0; 
spriteShapeDef.isSensor = true; 
spriteBody->CreateFixture(&spriteShapeDef); 

} 여기

은을 heres "고양이"

- (void)spawnCat { 

CGSize winSize = [CCDirector sharedDirector].winSize; 

CCSprite *cat = [CCSprite spriteWithSpriteFrameName:@"cat.jpg"]; 

//code here....... 


[self addBoxBodyForSprite:cat]; 
[_spriteSheet addChild:cat]; 

}

의 코드에 대한 코드 '자동차'

만 '고양이'93,949,

}가 충돌 위의 코드를 확인

,하지만 난이 spawnCar 방법에서 [self addBoxBodyForSprite:car];를 제거하는 경우, 다음이 충돌 나던는 본체가 아닌 '자동차'가 ... 도움이 필요한 순간은 매우 혼란 스럽습니다. 덕분에

+0

그건 그렇고, 당신은 아이로 선수를 두 번 추가하고 있습니다. –

+0

당신의 전체 코드가 좋다 ... 스프라이트의 이미지 나 프레임이 있는지 여부를 스프라이트 시트에서 확인하는 것이 좋습니다 ... 동일한 코드를 다운로드하여 완전히 작동합니다 ... – Marine

답변

0

addBoxBodyForSprite 메서드의 시작 부분에 중단 점을 설정하고 코드를 단계별로 실행하여 실제로 충돌이 발생한 지점을 확인할 수 있습니까? 무엇이 문제를 일으키는 지 정확히 판단하는 것이 중요합니다 ... 메소드의 모든 것이 잘 보입니다. 따라서 여기에 오류가 실제로 발생했는지 확인해야합니다.

어떻게 해야할지 모르는 경우 Xcode 디버깅을 검색하십시오.