2010-12-06 6 views
2

이전에 많은 답변을했지만 많은 것을 발견했지만 찾지 못했습니다.회전 각도를 Box2D 임펄스로 변환

나는 선형 충동을 적용하여 Box2D 동적 몸체를 만들어 발사체로 만듭니다. 그래서 화면의 아무 곳이나 클릭하면 몸이 터치 위치쪽으로 투사되기를 원합니다. 나는 아직 그 힘에 대해 걱정하지 않는다.

나는 이미 초기 회전 각도를 감지 할 수 있도록 내 스프라이트를 터치 위치로 가리키고 있지만이 각도를 45도라고 말하면서 "b2Vec2"값으로 몸을 정확히 시작할 수 있습니다. 45도? 이런 식으로 뭔가 : 모든 단서가 크게 감상 할 수

float rotationValue = 45.0f; 
b2Vec2 vect = ?????? 
b2Vec2 PointVector = body->GetPosition(); 
body->ApplyLinearImpulse(vect, PointVector); 

.

감사

답변

6

한숨 - VECT하는 각도를 변환

슈퍼 간단하다 : 당신이 당신의 수학 클래스에 주목해야하는 이유는 다음과 같습니다

float angle = 45.0f; 
b2Vec2 vect = b2Vec2(cos(angle), sin(angle)); 
+0

어쩌면 내가 틀렸다하지만, 여기서 라디안으로 변환 할 필요가 없습니까? – Zevan

+2

cos (angle * PI/180) – Zevan

+0

예 sin() 또는 cos()을 사용하는 경우 라디안으로 변환해야합니다. 그러나 45도 특별한 경우에는 매우 쉽습니다. 'vect = b2Vec2 (1,1)':) – Sylvan