2012-10-29 1 views
1

은 현재적인 Cocos2D에서, 나는 다음을 수행하는 응용 프로그램을 가지고있다. 화면을 누르면 팝업 창이 나타납니다. 내가 서클을 잡으면 서클은 일정한 속도로 계속 성장할 것입니다. 그러나 스프라이트가 커지는 사실에도 불구하고 box2d 본문은 그렇지 않습니다. 즉 스프라이트가 다른 바디와 충돌하지 않습니다. Sprite로 비례하는 반지름을 변경하는 방법을 알아 내려고 노력했지만 cocos2d에 대한 질문은 여기에 존재하지 않습니다. 나는 cocos2d 이외의 다른 box2d를 알아 챘지만 그걸 번역하는 데 어려움을 겪고있다.적인 Cocos2D Box2D의 스케일링 반경 원 기관

//smile.position = ccp(touchLocation.x, touchLocation.y); 
smile.scale = .05; 
[self addChild:smile]; 


// b2BodyDef smileBodyDef; 

smileBodyDef.type = b2_dynamicBody; 
smileBodyDef.position.Set(touchLocation.x/PTM_RATIO, touchLocation.y/PTM_RATIO); 
smileBodyDef.userData = smile; 
smileBody = world->CreateBody(&smileBodyDef); 
//Radius 
b2CircleShape smileCircleShape; 
int radius = 80; 

//Fixture 
smileFixtureDef.shape = &smileCircleShape; 
smileFixtureDef.density = 0.00f; 
smileFixtureDef.friction = .2f; 
smileBody->CreateFixture(&smileFixtureDef); 




if (CGRectContainsPoint(smileRect, touchLocation)) { 
growForever = [CCRepeatForever actionWithAction: [CCScaleBy actionWithDuration: .5 scale: 1.2]]; 
[growForever setTag:1]; 
[smile runAction:growForever]; 
+0

몇 가지 코드를 게시하시기 바랍니다. .! – Shailesh

+0

코드가 방금 추가되었습니다. –

답변

2

당신이 당신의 반경을 조정할 당신의 몸에 대해 만든 b2Fixture과 관련된 모양 객체를 잡아 한 다음 그에 따라 새 값을 설정할 때마다 :

fixture->GetShape()->m_radius = new_radius/PTM_RATIO; 
+0

설명 할 수 있습니까? 그 안에 복사하고 붙여 넣으려고했지만 new_radius가 알 수없는 변수라는 것을 알려줍니다. –

+0

new_radius는 단순히 "미소"스프라이트의 새로운 반경 값입니다. "미소"스프라이트가 비례하므로, 모양의 반지름을 스프라이트의 크기를 조절 한 것과 일치 시키길 원할 것입니다. 미소 스프라이트가 완벽한 원이면 [smile boundingBox] .size.width * 0.5로 new_radius 값을 얻을 수 있습니다. –

+0

Box2d의 몸체가 어떻게 확장되지 않는지에 대해 내가 읽었습니다. 시체를 파괴하고 새로운 시체를 다시 입어야합니다 ... 이걸 좀 더 자세히 설명해 주시겠습니까? –