Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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.014 c
1-82273
ЮРИЙ_К
2003-09-12 13:34
2003.09.25
Математический алгоритм... или ???


3-82100
DelphiM
2003-09-03 01:51
2003.09.25
Ошибка или я чтото не правильно делаю подскажите


1-82223
Wild
2003-09-11 17:40
2003.09.25
Параметры в процедурах и функциях


1-82287
Алексей Петухов
2003-09-15 05:57
2003.09.25
Сохранить и Загрузить Форму.


3-82148
Karnegi
2003-09-03 13:39
2003.09.25
Помогите с копированием строк





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский