Форум: "Игры";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
ВнизСтрельба с упреждением Найти похожие ветки
← →
CHiF (2003-03-21 12:48) [0]Помогите ктонибудь реализовать.
Пишу 2дшутер вид сверху, и мне надо чтобы боты стреляли не туда где сейчас враг, а туда где он будет. Т.е. вобщем то получаетца геометрическая задача, токо вот у меня ничо невышло, вся надежда на вас, мастера.
← →
A_n_t (2003-03-21 16:54) [1]X_Uint, Y_Uint - координаты юнита
X_Enemy, Y_ Enemy - координаты врага
Speed - скорость снаряда
X_Vector, Y_Vector - вектор движения юнита за единицу времени (скорость)
Distance - расстояние от юнита до врага
Time - время полета снаряда до юнита
X_End, Y_End - точка где будет юнит при подлете снаряда
Distance = Sqrt( Sqr(X_Uint - X_Enemy) + Sqr(Y_Uint - Y_Enemy))
Time = Distance / Speed
X_End = X_Uint + X_Vector*Time
Y_End = Y_Uint + Y_Vector*Time
стреляй по точке (X_End, Y_End)
Расчет простой, но при большой скорости полета снаряда и большого числа снарядов попадет - это точно.
Для единичных снарядов меткость будет меньше - нечего врагу с первого выстрела попадать :)
P.S. А вообще это задача для зенитных комплексов - так что за более точными расчетами обращайся к военным :)
← →
Mihey (2003-03-21 22:05) [2]Сделать ракеты-стингеры. :)
← →
CHiF (2003-03-22 10:07) [3]A_n_t: нееет, не так, если делать так, то рассчитываеца время
Time движения снаряда от юнита до ТЕКУЩЕГО положения врага, может с такой формулой и будут юниты попадать, иногда, но мне бы чегонибудь поточнее, математического такого. Может знает кто-нибудь? помогите плииз!!
← →
Snap (2003-03-22 10:20) [4]Имхо надо в цикле несколько раз проделать описанную процедуру, но тока в каждой итерации менять временные координаты юнита, и так пока точность не превысит какого то определённого значения. (к примеру 1 пиксель)
← →
Alek Aaz (2003-03-22 17:31) [5]2CHiF ©
Ну ты даешь пацан! Делается приблизительно так:
1. Вычисляешь время подлета снаряда в текущею позицию гада
Т = R (расстояние до гада)/V(скорость твоего супер-снаряда)
2. Вычисляешь где энто гад окажется в этот момент времени. Учитывая его текущюю скорост и направление.
3. Вычисляешь время подлета снаряда в гипотетическую позицию гада
Т1 = R1 (расстояние до предпологаемого положения гада)/V(скорость твоего супер-снаряда)
Если время подлета снаряда где-то равно гипотетическому то твой бот лепит в гипотетическую точку, где должен оказаться гад
Ежеле гаду хватит "ума" не переть в точку куда летит супер-снаряд то большой плюс твоему AI :)
← →
Nuke (2003-03-22 21:52) [6]Гыыыы короче так ! делаеш своему снаряду команду !
Пуля.PoitTo( Гад);
← →
Rampelstinskin (2003-03-22 22:45) [7]В векторной форме
U - Координаты юнита
V - Скорость юнита
E - Координаты врага
D - Растояние до врага
v - Скорость снаряда
t - Время
Закон изменения растояния до врага по времени
D=E+V*t-U
Со скоростью снаряда связавыем так
|D|=v*t
PS для 2d |D|=sqrt(x*x+y*y)
← →
Nuke (2003-03-22 22:51) [8]А формулу свободного подения кто мне скажет !
А то мне надо сделать а ебаться расчитывая угол падения ! мне в падлу !
← →
Rampelstinskin (2003-03-22 23:00) [9]2Nuke
Учебник физики за 5ый класс если не ошибаюсь.
← →
neuro (2003-03-23 04:21) [10]2Nuke:
Что значит формулу свободного падения?!
Берем значит высоту равной H.По закону сохранения полной энергии: mv^2
---- = mgh -- отсюда можно v найти...
2
Тебе оно надо было и в координатное выражение?
2Rampelstinskin: физику с 7-го класса начинают изучать =)
← →
CHiF (2003-03-23 18:43) [11]спасиба всем, ща проверим =)
← →
Juster~ (2003-03-23 20:17) [12]-> Nuke: Ты же у нас опытный товарищ, крупные проекты затеваешь... а элементаго не знаешь...
← →
neuro (2003-03-23 20:21) [13]2Juster~: видимо Nuke нужно было узнать все с поправкой на угол падения..
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c