Доброго времени суток!
Сегодня продолжаю писать игру, нужно было добавить оружие и научить вертолет стрелять. Заморочился выше крыши, во-первых в результате различных исследований у меня будут разные летательные аппараты, то есть вооружение они могут носить различное количество, например простенький начальный вертолет сможет быть вооружен только одним орудием, а например Ми-29 сможет нести уже 4 орудия. Во-вторых нужно знать и запоминать в какой ячейке установлено то или иное вооружение, соответственно и кнопки выстрела назначать на каждую ячейку отдельно. В -третьих каждое орудие имеет свои боевые характеристики, я хочу чтобы ученые и инженеры могли улучшать не только летательные аппараты но и оружие которые они будут нести.
Другими словами нельзя сделать так чтобы этот вертолётик стрелял только этой пушкой, а другой вертолётик другой пушкой. Слишком банально и примитивно, гораздо интереснее вооружать свою технику перед боем.
С индикаторами тоже история, у меня на экране один индикатор - патроны... но он ведь не сможет отразить сколько патронов осталось у каждого орудия, в общем нужно будет переделать )))
Раз заморочился нужно делать, сейчас у меня вертолет "апач", я решил что он будет носить 2 единицы вооружения, для начала игры достаточно, установить на него 1 пушку, взял его базовое орудие 30 миллиметровую пушку М230, нашел картинку в интернете, подредактировал и вот какая пушка у меня получилась:
Для нее нужны пульки, чем-то же она должна стрелять, пулю я сам решил нарисовать, все равно она мелкая и быстрая ))) вот что нарисовал:
сильно увеличена, аж до пикселей, а по сути градиент черного и белого, дальше нужно нарисовать индикаторы, решил сделать его зелененьким, чтоб не раздражал:
сами понимаете, опять градиент, за-то какой симпатичный вышел )))
На сегодня мне картинок хватит, дальше начинаю прописывать все это в игре. Итак создаю отдельный модуль вооружения, и записываю туда первую пушку:
Описал ее как тип, первая картинка это картинка самой пушки, вторая это картинка пули, сами пули описал как матрицу, 3Х20 первый ряд это координата Х пули, вторая У, ну и третья это собственно есть ли вообще эта пулька. Дальше идет размер этой пули, ну и остальные характеристики: скорострельность пушки, уровень повреждений и сколько патронов боекомплект.
Дальше процедура создания, ничего сложного, просто заполнил все данные. А вот с процедурой обработки пришлось повозиться. Мне пришлось определять где находится вертолет (чтобы пули не откуда попало летели), точнее координату его слота в которое установлено это орудие, определять какой кнопкой стрелять(на каждом слоте своя кнопка), определять, а есть ли вообще такое вооружение на вертолете, определять текущую скорострельность пушки, искать в матрице свободное место чтобы записать туда данные. Проверить остались ли пули вообще? Ну и на закуску обработать каждую пулю в отдельности, перерисовать ее координаты и проверить долетела ли она до конца, не врезалась ли в кого-то или во что-то.
С индикаторами тоже не получилась первоначальная задумка, хотел обрабатывать их одной процедурой, но не тут-то было, топливо кончается постоянно, а пули расходуются только когда стреляешь, уже разные события в игре... плюс пришлось выдумывать формулы для движения индикаторов. Например топливо: изначально у нас 300 единиц топлива, если прописать х=х+1, уже не получится, потому что окошко для вывода индикатора всего 120 точек, не сходится математика... ну и кончаться оно не должно так быстро, так ведь не бывает чтобы расход топлива был литр в секунду... или бывает?
В общем вот такая формула у меня вышла, может пригодится кому:
Коэффициент приращения координат = количество точек индикатора / количество топлива * коэффициент расхода.
Коэффициент расхода у меня = 0,01.
То есть у меня вышло вот что: расход=120/300*0,01 получилось 0,004 именно с такой скоростью у меня будет заканчиваться топливо, соответственно с увеличением объема бака этот коэффициент будет уменьшаться, и топлива хватит на дольше.
В общем то что казалось простым оказалось не очень простым )))
Но все таки добил до конца вертолет стреляет, пульки летают, индикаторы движутся, прелесть, вот только стрелять по нам пока не кому.
Пушка установлена на левое крыло.
Решил еще одну заморочку сделать, как только заканчивается топливо, вертолет отключает управление разворачивается и летит на базу, вот так )))
Ну и по традиции видосик, что же получилось.
Всем спасибо, подписывайтесь что бы ничего не пропустить.