2013-01-21 2 views
0

내 게임에서 화살표 방향으로 하나의 Ccsprite가 있고, 공이 하나의 b2body입니다 ... 내 화살표 스프라이트가 가리키는 방향으로 공을 던지려고합니다. 여기에 내 코드 ... 내가 화살표 스프라이트의 회전을 계산하고 그 각도로 볼에 충격을 적용하고있어이 ...입니다Box2D 게임에서 특정 각도로 b2body를 던지면서 발생하는 문제

float totalRotation = arrow.rotation ; 

ballBody->ApplyLinearImpulse(b2Vec2(10.0f+cos(totalRotation)*25.0f,10.0f+sin(totalRotation)*25.0f), eggBody->GetWorldCenter()); 

그러나이 정확하게 ... 공은 잘못된 방향으로 던져지고 작동하지 않음 .

+0

관련이 있음 : http://stackoverflow.com/questions/9164146/simple-gun-in-cocos2dbox2d-game – iforce2d

답변

0

CCNode (및 CCNode로부터 상속받은 CCSprite) 속성은도 단위로 측정되며 시계 방향 회전은 양수입니다. Box2D 세계는 라디안으로 측정 된 각도를 사용합니다. 반 시계 방향 회전은 양수입니다. 이는 직교 좌표계에서 더 일반적입니다. Box2D 함수에 올바른 각도를 제공하려면 변환해야합니다. 적인 Cocos2D에서, 변환은 다음과 같이 진행한다 :

float angle = - 1 * CC_DEGREES_TO_RADIANS(totalRotation);

매크로 라디안에서 totalRotation 변환하고 반대 인 반 시계 방향으로하여 -1 Box2D의 대책 때문에 포지티브 각도 곱 CCNode 회전.

관련 문제