![]() |
Стрельба по движущимся целям
День добрый, уважаемые флэшеры.
Давно хочу сделать ИИ, который будет стрелять по игроку, рассчитывая его траекторию, то есть туда, где он ДОЛЖЕН появиться, если не изменит скорость или направление. В баллистике это называется упреждением. У кого есть мысли, как всё это перенести на AS? Скажем, есть два объекта (b1 и b2). Одна из них - пуля (b1), другая - цель (b2). b2 летит с произвольной скоростью в произвольном направлении. А задача b1 - определить, где будет находиться b2 в тот момент, когда s1/v1 = s2/v2 (s - пройденное расстояние, v - скорость, соответственно s/v - время, которое должно быть одинаковым). Для наглядности приведу рисунок. http://fundux.ru/uploads/ris.gif |
Движение перса и движение пули - это по сути вектора. Сложи их (вектора или прирощения по осям) и получишь требуемую точку.
|
Для начала необходимо найти эти вектора) На рисунке конечный вариант, а изначально вектор (b1-ТС) неизвестен. Известны лишь скорости, местоположения объектов и направление b2.
|
A = Вектор стрельбы: b1-b2 (известен)
B = Вектор ходьбы: b2-TC легко найти зная скорость C (требуемый) = A + B |
Хм.. Физика, 8 класс:
X Final = Current _X + Xmov*time; Y Final = Current _Y + Ymov*time; |
4:
Дык ТС неизвестна :D Она дана чисто для примера, но её и надо вывести. Для ясности: http://fundux.ru/uploads/ris2.gif Цитата:
|
Как движение задано?
Если я правильно понял, то дан угол движения и скорость этого движения, тогда: Xmov=cos(angle)*speed; Ymov=sin(angle)*speed; Далее, X Final = Current _X + Xmov*time; Y Final = Current _Y + Ymov*time; Откуда формулы? Сейчас в голове вывел :) Обьясню: Сначала находим скорость по оси Х, это будет xMov - далее, если скорость не измениться - то через time секунд он будет в текущей позиции плюс эта скорость по оси Х умноженная на время. Аналогично и для _Y |
Вложений: 1
Код:
//ПригодитсяP.S. Поэксперементировал... ну флеш над дробями и издевается. В примере красный шар должен летать четко по зеленой линии. |
Psycho Tiger
Vertax В условии сказано же: -"Известны лишь скорости, местоположения объектов и направление b2." направление b1 неизвестно! AleXNoD GD точка TC это b2+V2*t, где t неизвестное число, а V вектор скорости b2. t находится из уравнения такого вида length((b2+V2*t)-b1) = v1*t где v1 величина скорости b1 должно получится квадратное уравнение. Решаем, получаем t, ну и находим TC = b2+V2*t |
| Часовой пояс GMT +4, время: 00:28. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.