Войти
ПрограммированиеФорумФизика

Полет мины по параболе. (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
(Правка: 11:06) 11:01, 28 сен. 2018

Zegalur
Так я об этом и говорю. Противник тоже ведь не стоит на месте - двигается. Вполне вероятно что по мере прицеливания и выстрела в него он успеет спрятаться за стену, тогда естественно попадание в стену и взрыв за пределами стены. Считай ему повезло, успел убежать.

Сам алгоритм получения aim'а у меня такой, в цикле получаю координаты всех противников, потом начинаю трассировкой "отсекать" ненужное(кто за препятствием, кто далеко и т.д.) Это на пулеметы ракеты и т.д.
Здесь-же, на миномет, я хочу немного трассировку изменить, т.е. будут видны даже те противники, которые за препятствием находятся. Тупо сделать просчет траектории, как можно выше, до предела коробки(неба) но более 50 градусов. А там как Бог даст. Взорвется за стеной - отлично, не позволит угол - тоже неплохо. Косвенный ущерб можно задать, даже просто звон в ушах, тряску, покраснение и т.д., имитацию взрывной волны.


#16
11:05, 28 сен. 2018

Учти еще, что мина летит медленно. Стрелять надо не в противника, а туда, где он предположительно будет.

#17
(Правка: 11:19) 11:08, 28 сен. 2018

Zab
> Учти еще, что мина летит медленно. Стрелять надо не в противника, а туда, где он предположительно будет.
Я поэтому и хочу делать задержку на взрыв, взрывать над землей, еще до удара о препятствие. Карты маленькие, так что далеко не убежит.

Посмотреть бы код рогатки из игры "Angry Birds", очень мне этот код нравится. Вроде игрушка детская, но движек достаточно серьёзный, наверно на юнити делали.

#18
(Правка: 11:23) 11:22, 28 сен. 2018

Мина осколочная? Во времена второй мировой других и не делали, но сейчас разные есть. Фугасной миной надо попадать, радиус поражения очень маленький, буквально пара метров, а летит она секунд 10-20. У осколочной, тем более взрываемой в воздухе, радиус очень большой, но есть шансы что не попадут осколки и бронебойность никакая, спасает даже самое легкое препятствие. Во второй мировой еще и взрыватели дистанционные делали с большим трудом, только начинали работы в этом направлении.

#19
(Правка: 11:46) 11:33, 28 сен. 2018

Zab
:=))

Это уже нюансы. Сделать определение дистанции до aim'а и при превышении этого значения взрывать гранату (как на ракетах у меня), если попадает в твердое препятствие, не достигнув заданной дистанции (стену, дерево и т.д.), взрывается раньше.
А вообще, я думаю так,  гранатомет автоматический, гранаты в ленте, можно вообще стрелять по 5 гранат разом. Не по одной. Типа града. Что-то попадет, что-то нет.

Сейчас мне главное понять принцип построения траектории ОТ КОНЕЧНОЙ ТОЧКИ (aim) до гранатомета, а там уже дело техники и фантазии.

Была у меня мысль, тупо выставить угол, например 45 градусов, и шмалять куда ни попадя. Но очень уж хочется получить управляемый ствол.


Вопрос по коду который я выше показывал:

X:integer;  //координата Х      
Y:integer;  //координата Y

        Y := 380-Round(30*(V0*Sin(A*Pi/180)*T-G*T*T/2));
        X := 5+Round(10*(V0*Cos(A*Pi/180)*T));


Почему он X и Y объявляет как интегр? Не пойму. А потом раундом округляет, зачем? Это же не float, это Integer - простое число, что там округлять? Что за язык, на паскаль похож.

#20
(Правка: 11:49) 11:47, 28 сен. 2018

Выставляя на 45 градусов, ты примерно получаешь максимальную дальность стрельбы. Делаешь пробный просчет, если перелет - меняешь угол, берешь в вилку.

Вид баллистической кривой:
Изображение

Причем, чем меньше начальная скорость и больше парусность, тем больше оно не похоже на параболу. Для миномета совсем не похоже. Снаряд вырывается из ствола, поначалу летит почти по параболе, довольно быстро теряя скорость до фиксированного значения, переваливает верхний участок траектории и падает почти вертикально вниз, с той же самой фиксированной скоростью. Силу тяжести, которая должна была бы разгонять, компенсирует сопротивление воздуха.

#21
11:52, 28 сен. 2018

tonline_kms65
млжно и под 45 если регулировать силу выстрела

#22
(Правка: 12:06) 12:00, 28 сен. 2018

Zab

Интересно. У NPC не будет такой возможности делать пересчет и брать в вилку. Это просто бот. Шмальнул и дальше покатился.
Но, я так думаю, в игре это никто не заметит.
Вот смотри, по твоему графику, как можно построить траекторию от "Цель" до "Мушка". При тех же условиях что на графике. Ты бы сам как делал?

#23
12:02, 28 сен. 2018

Tonal

Я хочу понять как сделать. На будущее. Все равно столкнусь с этим. Хочу полностью управляемый миномет.

#24
12:13, 28 сен. 2018

tonline_kms65
баллистический калькулятор

#25
12:28, 28 сен. 2018

tonline_kms65
> Ты бы сам как делал?
Я бы бил по площадям. Так и делали во времена второй мировой. Почти невозможно учесть все условия, влияющие на полет мины, считай - не считай, а полетит она куда хочет. Одна надежда на очень большой радиус разлета осколков. В условиях ровной как стол местности мины смертельны для небронированных целей. Не нашедшую укрытия пехоту может залпом положить всю, сколько бы их там не было.

#26
12:43, 28 сен. 2018

Смотри, начальный участок траектории хоть и самый длинный, но он же и самый быстрый. Когда снаряд набрал высоту, он уже совсем на излете, скорость минимальная. Потом он начинает падать, чуток скорости набирает, но до значения корень кубический из (m*g/s), что является константой для типа снаряда и от начальной скорости никак не зависит. Считай, что булыжник на противника сверху падает, уронили. На финальном участке траектории его может снести куда угодно, да и цель устанет стоять на месте и не спеша куда-нибудь откочует.

#27
(Правка: 14:31) 14:25, 28 сен. 2018

Не хочешь читать школьный учебник за 9й класс, могу порекомендовать "Элементарный учебник физики" Ландсберга, там все также просто изложено, как в школьном, но больше и интереснее. Знание высшей математики не предполагается.
Я тебе ничего не рассказал сверх того, что должно быть известно всем.
Учебник Ландсберга мне попался в руки в девятилетнем возрасте, он уже тогда был доступен для понимания. Сам понимаешь, никакой подготовки еще и быть не могло к этому времени, всего несколько лет как читать бегло выучился.

#28
(Правка: 14:44) 14:42, 28 сен. 2018

tonline_kms65
> Почему он X и Y объявляет как интегр?

Потому что это какие-то целые координаты (к примеру, это координаты пикселей на экране; нет пикселя с координатами {0.3, 2.1}).

tonline_kms65
> А потом раундом округляет, зачем? Это же не float, это Integer - простое
> число, что там округлять?

Рассмотрим выражение:

Y := 380-Round(30*(V0*Sin(A*Pi/180)*T-G*T*T/2))

Сначала тут вычисляется выражение (30*(V0*Sin(A*Pi/180)*T-G*T*T/2). Очевидно, результат этого выражения получится вещественным (потому что в нем, к примеру, вычисляется синус). Обозначим это выражение за X.

После этого происходит следующее:

Y := 380-Round(X)

Если бы мы не использовался Round и написали бы:

Y := 380 - X

то произошло бы следующее: т.к. X — вещественное, то (380 - X) — тоже вещественное. Далее мы попытались бы записать вещественное число в целочисленную переменную. При этом произошло бы неявное приведение типов (у вещественного числа бы отбросилась дробная часть).

Используя Round, мы вручную получаем из вещественного числа целое, округляя его как-то способом.

tonline_kms65
> Что за язык, на паскаль похож.

Немного похоже на Delphi.

#29
17:09, 28 сен. 2018

tegauss
Согласен с тобой. Действительно, получим несоответствие типов на выходе. Я кстати не подумал о пикселях экрана, он же прорисовку делает. Тупею.
Не имел вообще дел с делфи. Ни разу. Да и по барабану.


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

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумФизика