В данном уроке я расскажу, как можно реализовать вертолёт-NPC который будет преследовать Фейт в игре и нещадно палить в неё c двух стволов.
Для начала я покажу полную схему в Кисмете. Схему для лучшего восприятия и понимания я поделил на две части:
Первая часть отвечает за полное прекращение стрельбы и возвращения вертолёта обратно на «базу».
Вторая часть, собственно говоря, активирует вертолёт и двух полицейских на борту.
Начнём мы с расстановки Нодов (Node). Ноды другие «крылатые» не те, что используются для перемещения полиции по земле.
И так, открываем окно Actor Classes и ищем ветку NavigationPoint, открываем её, затем открываем ветку PathNode->VolumePathNode->TdConfinedVolumePathNode.
Собственно говоря, TdConfinedVolumePathNode нам и нужен. Выделяем его, и ставит там, откуда и должен вылететь вертолёт. В свойствах данного нода нужно поставить галку напротив bEdShouldSnap (список Advanced). Это какая то фиксация, чего и зачем я не понял
Расставляем ноды дальше, так как вам дано, это путь вертолёта. И настраиваем также как и первый.
Теперь нам понадобится другой тип нода: NavigationPoint-> PathNode->VolumePathNode->TdConfinedVolumePathNode->TdAttackPathNode. Визуально они ничем ни отличаются от предыдущих, но имеют немного другие свойства. В общем, расставляем и разворачиваем их там, где будет пробегать Фейт. Примерно так:
Высоту, радиус, градус можно настроить, если есть необходимость.
После того как все ноды расставлены их нужно откомпилировать, (кнопка Build Paths)
Важно что бы после компиляции между нодами была связь. Проверить это можно нажатием клавише «P»
Переходим к Кисмету.
Начнём со второй части схемы. Ставит обычный триггер для вызова вертолёта, там, где вам нужно. В свойствах триггера выбираем тип коллизии как на скрине ниже.
Добавляем его в кисмет. Теперь я расскажу, где находятся остальные блоки:
New Action -> Switch -> Switch
New Action -> Misc -> Delay
New Action -> AI -> Takedown Helicopter Factory
New Action -> Sound -> Td Play Sound
New Action -> AI -> Takedown Bot Factory
New Variable -> Object -> Object (???)
Подключаем все, так как показано на первом скриншоте. Чуть позже я расскажу, куда нужно подключать некоторые объекты, так как по скрину это может быть не понятно.
Теперь настройка некоторых блоков.
Второй блок Delay:
Duration = 1.5
Блок Takedown Helicopter Factory:
bCheckSpawnCollision – убираем галку.
Открываем вкладку Factory, в строке HelicopterSkeletalMesh прописываем модель вертолёта (SkeletalMesh'SWAT_Blackhawk.SK_SWAT_Blackhawk_01')
Блок Takedown Bot Factory:
BotTemplate – AITemplate_Gunner
SpawnCount – 2
Блок Td Play Sound
FadeInTime – 3.5
FadeOutTime – 3.5
OcclusionCheckInterval – 1.0
OcclusionFadeTime – 3.0
OcclusionFilterDuckLevel – 0.2
PlaySound - SoundCue'A_Vehicle_Helicopter.Helicopter.Helicopter'
Теперь выделяете, первый TdConfinedVolumePathNode добавляете его в кисмет и подключаете его к выходу Spawn Point блока Takedown Helicopter Factory.
Примерно в том же месте, где расположен, первый TdConfinedVolumePathNode располагаем два обычных PathNode, добавляем их в кисмет и подключаем к Spawn Point блок Takedown Bot Factory
Теперь переходим к первой части схемы.
Триггер ставим там, где хотите, он отвечает за возврат вертолёта обратно на «базу»
New Action -> AI -> Hold Fire
New Action -> AI -> Td Mute/Unmute AI
New Action -> AI -> Move To Actor (Latent)
New Action -> AI -> Set Heli Speed
New Action -> Actor -> Destroy
Настройки:
Блок Delay
Duration – 5.0
Ещё раз добавляем первый TdConfinedVolumePathNode в кисмет и подключаем к Destination блок Move to Actor
Так теперь про связи.
Выход Out блока Hold Fire подключаем к входам блоков Td Mute/Unmute AI, Move To Actor и Td Set Heli Speed
Связь ??? показана на скринах ниже.
На этом всё.