Воскресенье, 22 Декабря 2024, 19:40

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Траектория полета
Ilyko96Дата: Понедельник, 06 Декабря 2010, 19:11 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Значит начал я воплощать свою мечту на конструкте - хочу сделать великих вормсов))))) Вроде бы сурьёзных причин для провала сей идеи я не вижу, поэтому все еще продолжаю этот проект))) biggrin

Хочу сделать 2 режима игры: 1) Нечто для двух игроков - ходы поочередно; 2) Нечто для одного игрока, против компьютера))) Встал вопрос об отладке ИИ компа, и тут я столкнулся с первой сурьёзной проблемкой - расчет траектории движения снарядов. На изображении ниже схематично показано, что где дано и что надо найти. В физике я не оч силен, поэтому помощи прошу у уважаемых игроделов))))))) biggrin

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

Traectoriya.cap

Значит еще раз: мне надо найти скорость, с которой мы пульнем в противника снарядом, и угол, под которым мы произведем выстрел.




МОЙ КАНАЛ


Сообщение отредактировал Ilyko96 - Вторник, 07 Декабря 2010, 14:10
QWER56Дата: Вторник, 07 Декабря 2010, 20:14 | Сообщение # 2
старожил
Сейчас нет на сайте
Скорость постоянная (const) или с ускорением?

ConsMark - поисковик по интернет магазинам.
Ilyko96Дата: Вторник, 07 Декабря 2010, 21:55 | Сообщение # 3
почетный гость
Сейчас нет на сайте
V(obj) - постоянная
V(obj) тяжести - с ускорением




МОЙ КАНАЛ
vicu2010Дата: Вторник, 07 Декабря 2010, 22:35 | Сообщение # 4
Сейчас нет на сайте



Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic


Сообщение отредактировал vicu2010 - Вторник, 07 Декабря 2010, 22:35
Serg1971Дата: Среда, 08 Декабря 2010, 11:37 | Сообщение # 5
Весёлый программист
Сейчас нет на сайте
Ilyko96, конечно, можно посчитать всё с полными физическими выкладками, найти вектор вертикальной скорости, горизонтальную состовляющую, высоту на которую поднимется снаряд в максимальной точке траектории... Только зачем такие сложности... Предлагаю тебе - сделать рассчёты по упрощённой модели. Представь, что ты выстрелил прямо, совершенно горизонтально. Время подлёта к цели - t=S/V ;где s-расстояние, а v-скорость снаряда. Она у тебя будет разная, всё зависит от класса оружия, ракета - медленная, пуля быстрая, ну там граната и т.д. Скорости - можешь брать любые для классов, отточишь в балансе (увеличивая-уменьшая, подгоняя) smile В конце времени подлёта, снаряд сместится по вертикали на h=gt, где g-ускорение падения в твоём мире. Соответственно, пушку необходимо поднять на некоторый угол альфа, который находится из соотношения тангенса. Тангенс альфа = h/S. При полёте снаряда по траектории, каждую секунду сдвигаешь его вниз на величину g, соответственно за полсекунды g/2, за десятую долю секунды g/10, всё зависит от дискретности графика полёта.

allxumukДата: Среда, 08 Декабря 2010, 12:38 | Сообщение # 6
старожил
Сейчас нет на сайте
Да не, нето, как запустить снаряд давно известно и в констракте это делается без проблем. Тут вопрос в другов, нужно чтобы бот стрелял в игрока снарядами подверженными действию гравитации и попадал.

Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
Ilyko96Дата: Среда, 08 Декабря 2010, 14:43 | Сообщение # 7
почетный гость
Сейчас нет на сайте
Serg1971, спасибо конечно, в крайнем случае попробую сделать так, но понимаешь, если ты работал в конструкте, то ты знаешь, что там все то, что ты только что прописал уже давно автоматизировано и стоит только указать силу гравитации, скорость полета и угол. Все дело в том, что нужно просто прописать выражение, по которому при определенной скорости полета выдавался бы угол альфа. Снарядов планируется несколько типов (не менее 10 впоследствии) и как бэ не айс каждый раз прпописывать эту муть... Гораздо проще по уже выведенному выражению менять независимую переменную скорости полета, вследствие чего выдавался бы больший угол. Но тут есть один нюанс: если чисто физически допульнуть снарядом до цели не удасться (что в моем случае невозможно в силу того, что при угле в 45 градусов снаряд перелетает всю карту), то выраженрие будет давать неправильную информацию и все будет глючить. Но из-за того, что меня этот нюанс волновать не будет, я хочу вывести эту формулу, но мне не хватает банально знаний в баллистике...

Так что, в случае неудачи с этой формулой придется воспользоваться твоим методом)))))




МОЙ КАНАЛ
Serg1971Дата: Среда, 08 Декабря 2010, 17:57 | Сообщение # 8
Весёлый программист
Сейчас нет на сайте
Ilyko96, Нее, я в конструкторах не работаю - я ЯП-ист! smile Вот этим и отличается ЯП от всяких конструкторов, что там полная свобода! У меня например - всего три строчки кода ушло бы на это... Эх, игроделы блин, когда же вы физику учить-то будете! biggrin
На, принимай... Основной вывод формул, который я делал из системы двух уравнений - я опущю... Если надо будет подробный вывод, то стукнешь в личку. Максимальный подъём в середине траектории у(max)=(V0^2/2g)*sin^2(альфа); где V0-начальная скорость снаряда;^2-в квадрате значит. Дальность полёта снаряда S=(2V0^2/g)sin 2(альфа). Дальность полёта будет максимальна при sin 2(альфа)=1; 2(альфа)=Пи/2;(где Пи=180 градусов); альфа=45 градусов. При этих граничных условиях, зная расстояние, можно найти минимально необходимую скорость снаряда... Потом, просто меняешь угол (ведь надеюсь - скорость снаряда у тебя неизменная будет?) smile


Ilyko96Дата: Среда, 08 Декабря 2010, 20:31 | Сообщение # 9
почетный гость
Сейчас нет на сайте
Serg1971, спасибо большое, но мне уже на другом форуме подсказали формулу, хотя и немного не догнал как они так вычислили))))) shy

Quote (Serg1971)
ведь надеюсь - скорость снаряда у тебя неизменная будет?

Ммм... она постоянная, как я уже писал... Но независимая переменная, т.е. если сила одна, то угол другой, если сила другая - угол другой, т.е. не постоянная как бэ)))))))))

Вот примерчик, как мне помогли товарищи с другого форума (специализированного по скирре конструкт) Но тут к сожаленью все работает, только если координата Y цели совпадает с координатой Y точки старта...(((

Alpha.exe

Quote (Serg1971)
Если надо будет подробный вывод, то стукнешь в личку

Если тебе не сложно и есть чуток лишнего времени, то можешь поподробней объяснить, каким образом все это ты вычислил? shy :shy: shy




МОЙ КАНАЛ


Сообщение отредактировал Ilyko96 - Среда, 08 Декабря 2010, 20:33
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг