2017-02-07 29 views
0

Как реализовать стрельбу шара вверх от высоты земли под определенным углом?Физика шара: контроль скорости шара с направлением

Я попытался применения в ball->update(frameTime)

velocity.x = cos(tank->getAngle()) * baseSpeed; 
    velocity.y = sin(tank->getAngle()) * baseSpeed; 
    spriteData.x += velocity.x * frameTime; 
    spriteData.y += velocity.y * frameTime; 

Но мяч летит просто случайно и выходить из игрового экрана.

Помощь?

+0

«getAngle» возвращает градусы или радианы? Используются ли функции 'sin' и' cos', ожидающие степени или радианы? – NathanOliver

+0

@George tank-> getAngle() - угол ствола, который относительно резервуара – user7194060

+0

@NathanOliver возвращает градусы, cos и sin использует радианы, но я пробовал изменения getAngle для радианов, и он все еще не работает – user7194060

ответ

0

Из-за просмотра комментариев к видео появляется недоразумение. Я думаю, когда Джордж сказал использовать вектор toTarget, он подразумевает его как градиент линии движения мяча. Не шары фактического конечного назначения. также преобразование из градусов в радианы будет

((Tank->getangle()*pi)/180). 

В не векторной форме:

(возможно, неправильные СИНТАКСИСА НО МАТЕМАТИКА ПРАВИЛЬНО)

velocity.x = cos((Tank->getangle()*pi)/180) * baseSpeed; 
velocity.y = sin((Tank->getangle()*pi)/180) * baseSpeed; 
spriteData.x += velocity.x * frameTime; 
spriteData.y += velocity.y * frameTime; 

также я, но уверен, что ваш frameTime, но это может вызвать проблемы, если он работает так, как я представляю себе его работу с его именем. если ваша программа все еще не работает, когда вы читаете это, это может быть очень хорошо связано с этим.

 Смежные вопросы

  • Нет связанных вопросов^_^