Преобразование градусов вращения в импульс Box2D - PullRequest
2 голосов
/ 06 декабря 2010

Много извинений, если на этот вопрос уже был дан ответ, но я не смог найти то, что искал.

У меня есть динамическое тело Box2D, к которому я применяю линейный импульс, чтобы превратить его в снаряд. Поэтому, когда я нажимаю в любом месте на экране, я хочу, чтобы тело было спроецировано на место касания. Меня пока не волнует сила, только угол.

У меня уже есть вращающийся спрайт, указывающий на местоположение касания, чтобы я мог определить начальный угол поворота, но как мне повернуть этот угол, скажем, на 45 градусов, в значение "b2Vec2", чтобы я мог запустить тело ровно на 45 градусы? как то так:

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

Любые подсказки будут с благодарностью.

Спасибо

1 Ответ

6 голосов
/ 06 декабря 2010

вздох - вот почему вы должны обратить внимание на уроке математики:)

Преобразование углов в вектор очень просто:

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