2010-03-16 3 views
2

Мне нужен алгоритм для анимации стрелки на основе 2 параметров, угла при съемке и мощности при рисовании лука. Ive пытался использовать y = asinx, но он работает только при стрельбе в направлении вверх. Не работает хорошо во время съемки с прямым или нисходящим направлением. Благодарю.Алгоритм программирования игры в стрельбе из лука

+0

'y = asinx'? Что такое 'y',' a' и 'x'? 'x' - это угол и' a' власть? –

+0

Координата Y = y a = angle x = x координата Переменная мощности i добавила ее в координату x. – 2010-03-16 00:43:48

+0

Это будет «Золотой выстрел» с Бобом Монкхаусом? – amelvin

ответ

12

Полет вашего снаряда описывается

x(t) = v * cos(theta) * t 
y(t) = v * sin(theta) * t - 1/2 * g * t^2 

где Т время, v начальная скорость (мощность) , theta угол, g - ускорение силы тяжести (например, 9,8 м/с^2), x - горизонтальная координата, y - высота.

+3

Предполагая, что нет ветра и незначительного сопротивления воздуха –

+0

Спасибо, что попробуй и уточни, если это сработает для меня или нет. Спасибо – 2010-03-16 01:01:03

+2

И пренебрежение силой Кориолиса ;-) –

7

Вы можете попытаться имитировать движение вместо получения аналитической функции. то есть следить за текущей позицией, векторами скорости и ускорения для стрелки и каждым приращением времени, обновлять положение, основанное на скорости и скорости на основе ускорения.

в противном случае, если вам нужна аналитическая функция, см @bnaul's answer для аналитической версии

+0

Для моделирования движения потребуется дополнительная логика, сравниваемая с использованием функции. Не могли бы вы описать здесь x, y, a, b, c? – 2010-03-16 00:59:13

+0

Зачем использовать медленное и неточное решение грубой силы для тривиально-разрешимого аналитического уравнения? –

+0

@Rex: потому что обычный игровой случай включает в себя неаналитические компоненты - например, столкновения с произвольными формами местности или объектами. – Jimmy