XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Другие игры (только чтение)> Max Payne
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
Iron Fred
Max Payne 2 modmaker
offline
Опыт: 5,661
Активность:
Примеры создания автоматических турелей для Max Payne 2
Данная статья может помочь тем, кто намерился создать анимированные турели (или, напр бтр, танк...) Содержит основные рекомендации и описание работы.
Т. к. создание подобных объектов является, по сути, высшим пилотажем маппинг-скриптинга, то не надейтесь, что сразу же поймете как все сделать из этой статьи. Уверен, что в большинстве случаев будут говорить, что почти ничего из нее не поняли. Работайте головой, додумывайте, из любого положения есть выход, главное поставить себе цель. Рабочего примера своего броневика я не прикладываю, по той причине что дело было давно и он попросту не сохранился.
В связи с тем, что лимит, отпущенный сайтом на хранение статей по Максу Пейну 2, исчерпан, пишу новой темой на форуме.

Создание геометрии будущей турели и ее анимирование.

Для начала вам нужно будет создать башню и пулемет, динамические объекты (далее ДО) с коллизиями. Это могут быть как подобия реальных видов турелей, так и результат вашей фантазии. У башни должен быть главный динамический объект, который следует расположить на месте оси ее вращения. Что-то вроде маленького кубика, например, помещенного в ее основании. Он будет невидим, поэтому ставим ему в свойствах галку на "Do Not Render".
  • Сам меш башни, пулемет и их коллизии, должны быть потомками главного ДО. Для этого просто нужно выделить эти меши и поместить их драг-энд-дропом в этот главный объект.
Внимание! Напомню, что только коллизии башни и пулемета должны быть с проставленными галками на нужных "Collisions", сами меши, являющиеся вогнутыми объектами, не должны иметь оных галок. В противном случае получите ошибку.
Кроме всего прочего нужно проставить на всех деталях галки на "Cast No Shadows", чтобы турель не отбрасывала падающую тень, если это будет вам угодно. Если этого не сделать - после уничтожения турели останется черное пятно тени.
  • Теперь нужно анимировать башню на вращение и пулемет на наводку в вертикальной плоскости. Для вращения башни нужно анимировать главный ДО турели, ну а для пулемета - лучше создать маленький кубик - ось (подобно башне) и поместить все части пулемета в него, соответственно и анимировать этот ДО.
Анимирование.
Башня должна быть анимирована на 8-мь основных позиций: 0°, 45°, 90°, 135°, 180°, -135°, -90° и -45°. Сделать это будет вполне реально руководствуясь статьей "Дверь с кнопкой" из раздела по скриптингу. ссылка
Пулемет можно анимировать всего на 2-3 позиции. Все зависит от угла его наклона по вертикали относительно конструкции башни. Ствол прямо, вверх по максимуму, до упора в вырезе башни, и вниз, до упора в вырезе башни.
  • Сам пулемет должен иметь на стволе фсм, из которого будут вылетать пули и партиклы огня. Кроме того вам потребуется написать скрипт механизма стрельбы пулемета, состоящий из таймера, посылающего пули, вспышки огня и звуки стрельбы через заданное время (отрегулировать скорострельность). Он должен иметь события (sends) открытия огня, прекращения стрельбы, уничтожения и тд... Это я тоже не буду пока отдельно расписывать, тк не сложно придумать такой алгоритм практически любому маперу.

Создание радара поиска и обнаружения цели и его анимирование.

Радар может быть разной конструкции. Все зависит от вашей фантазии и требуемых возможностей к этой части турели.
Представляет собой невидимую рамку-триггер, вращающуюся вокруг своей оси, либо качающууся в горизонтальной плоскости, подобно маятнику, дочерний объект башни.
  • Он может контролировать узкую область обзора (что-то вроде старого самолетного радара). См рисунок.
  • Также может контролировать всю зону вокруг на 360°, делая полные обороты. См рисунок.
Анимирование.
Анимировать радар нужно, учитывая требуемую вам область контроля. В случае обзора на 90° - на 0°, 45° и -45°, при обзоре на 180° - добавить еще позиции 90° и -90°. Ну а если контроль на 360° - то все как у башни: 0°, 45°, 90°, 135°, 180°, -135°, -90° и -45° (вращение начинать напр с нуля градусов и по часовой стрелке до полного оборота). Как это сделать подробно описывать не буду, тк все подробно описывалось в статье "Дверь с кнопкой". ссылка

Создание устройства для захвата цели в прицел пулемета.

Устройство для захвата цели представляет собой пару длинных, параллельных друг другу, широких, веероподобных (либо каких-то иных по форме) рамок, закрепленных на башне по бокам от пулемета, и являющихся ее потомками (не пулемета). См рисунок.
! На рисунке опечатка! Триггеры по бокам пулемета потомки башни!
  • Для захвата цели в прицел пулемета по вертикали используется 2-е узких рамки сверху и снизу от пулемета. Они параллельны друг другу и рассчитаны на удержании в прицеле капсулы игрока, с небольшими напусками (расстояние чуть больше высоты капсулы), для исключения возможного срыва цели. Эти рамки уже являются потомками пулемета, а не башни. См тот-же рисунок.
  • Во время поворота башни, ближний к цели триггер деактивируется. Он включается только при контакте с внутренней частью второй рамки. Одновременно с этим на башню подается команда реверт анимации. Башня поворачивается в в обратную сторону, и врубившийся триггер, касаясь капсулы перса, также врубает реверт. Так перс оказывается как-бы в ловушке, башня постоянно качается, не выпуская его из прицела.
  • Длинна рамок зависит от радиуса зоны поражения турели, нет смысла ее делать длиннее чем рамку радара.
  • Стрельба из пулемета производится сразу после касания верхней рамки, верхней части капсулы персонажа (головы), это значит что наводку по вертикали следует производить накладывая эту рамку-триггер сверху. Сразу после этого активировать нижнюю рамку пулемета и цель будет захвачена по вертикали.
Улучшение надежности захвата цели по горизонтали.
Частенько, используя кувырок вбок, игроку удается выскользнуть из триггерных объятий турели. Это происходит, напр., из-за непрерывного маятникового колебания башни. Улучшить надежность захвата помогут дополнительные рамки, расположенные снаружи от основных. См рисунок.

Принцип совместной работы радара и устройства захвата цели.

Теперь рассмотрим пример, который поможет понять, как все должно срабатывать, чтобы создать скрипт турели.

Пример с радаром на 360°.

  • Вот появилась цель на 3-и часа от турели.
  • Вращающийся с определенной скоростью радар коснулся цели и послал сигнал башне "цель поймана", т. е активировал ей названное соответственно событие (сенд).
  • У радара и у башни есть 8-мь основных положений: 0°, 45°, 90°, 135°, 180°, -135°, -90° и -45°. > Вращение радар начинает с нуля, по часовой стрелке, с первой анимации "фронт-райт45" и одновременно с этим переключает в персональном ФСМ-счетчике на стейт свитча "45", это значит, что сейчас он проходит дугу от 0° до 45°. После того как анимация дойдет до конечного кадра и врубится следующий ее отрезок, свитч переключится на "90" и т.д....
  • Если цель поймана на отрезке под стэйтом переключателя (далее - свитчера) "135", (то бишь на отрезке от 90° до 135°), то радар врубает свой сенд и тот, в зависимости от свитчера (в данном случае активен "135"-й), посылает комманду на список сендов ФСМ'а башни.
  • Башня может находиться в данный момент направленной пушкой на 1-о из 8-и положений и так-же в данный момент активен соответствующий свитчер.
  • Сенд радара через свой свитч передал сигнал сенду башни под названием "цель на 135°", а тот уже, в зависимости от таблицы свитчеров положения башни, направляет пушку по кругу (по час стр или прот ч с, в зависимости от положения башни).
  • Например пушка на "-45", цель поймана на "135°", т.е прямо позади пушки (цели сзади башни может поймать только радар вращ-ся на 360° вокруг башни). Теперь башня ворочается по ч.с, но не к позиции "135" (вдруг цель перемещается и быстро), а по полному кругу. Алгоритму важно лишь, откуда начинать вращение.
  • Цель на месте не стоит, она движется, башне нужно лишь захватить ее в "ловушку" прицела и расстрелять. Если башня пройдет позицию "135" впустую, то радар будет активирован снова.

Недостатки.

К недостаткам можно отнести всепроникаемость триггерных рамок устройств наведения и радара, из-за которых турель может захватывать цель например за домом и стрелять в дом. Именно по этой причине лучше располагать такие объекты на удалении от стен и юзать радар с мертвыми зонами, т.е маятниковый.
Iron Fred добавил:
Примечание: Касательно пункта, рассматривающего пример работы скрипта взаимодействия радара и турели я заранее извинюсь. Написано очень путанным языком, без четких указаний что и где прописывать. Но объяснить иначе мне не представляется возможным, тк не являюсь профессиональным программистом. Писал как понимал сам, уж не обессудьте. Сложновато это все. А на то, чтобы подробно расписать все команды для всех фсм скрипта уйдет уйма свободного времени. Возможно когда-нибудь позднее.
Миниатюры
Кликните на картинку для увеличения
Название:  radar_smz.jpg
Просмотров: 14
Размер:  104.8 Кбайт  Кликните на картинку для увеличения
Название:  radar_360.jpg
Просмотров: 11
Размер:  152.5 Кбайт  Кликните на картинку для увеличения
Название:  ratan_zahvat.jpg
Просмотров: 24
Размер:  169.4 Кбайт  Кликните на картинку для увеличения
Название:  ratan_dop_control.jpg
Просмотров: 16
Размер:  301.5 Кбайт  

Отредактировано Iron Fred, 21.06.2013 в 21:17.
Старый 21.06.2013, 20:46
Hancock
Ding Dong
offline
Опыт: 5,866
Активность:
Откровенно говоря я бы не взялся за это... я сделал бы врага, стоящего на месте с телом от турели, можно было бы привязать её по высоте и сделать анимы поворота тоже.
Старый 22.06.2013, 14:29
AntiEvil
девочка-гик-хипстер
offline
Опыт: 6,794
Активность:
Hancock, это для тех,кто не может скинить. Есть такие.
Старый 22.06.2013, 14:34
Hancock
Ding Dong
offline
Опыт: 5,866
Активность:
AntiEvil, по-моему проще научиться скинить))) Тем более турель, где почти ничего не двигается
Старый 22.06.2013, 21:59
Iron Fred
Max Payne 2 modmaker
offline
Опыт: 5,661
Активность:
AntiEvil, Hancock, вобщем да, по сути - гемор и есть.) Скином понят проще.
Iron Fred добавил:
Это вариант, который юзали разрабы мода Новый рассвет. Мало ли, авось сгодится кому.)
Старый 22.06.2013, 23:05

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 08:38.