- ThunderWire Studio - Youtube Channel
- ThunderWire Studio - Developer Website
- ThunderWire Studio - AssetStore
- Horror FPS KIT - Website
- Horror FPS KIT - AssetStore
- Функция Floating Object позволяет лучше находить скрытые объекты или отмечать интерактивные объекты.
ДОБАВЛЕНИЕ НОВЫХ ПЛАВАЮЩИХ ОБЪЕКТОВ
- Выберите опцию Add FloatingIcons из меню.
- Это автоматически добавит все выбранные объекты в список Floating Icons.
ДОБАВЛЕНИЕ ОБЪЕКТОВ ИССЛЕДОВАНИЯ
- Установите слой объекта на слой Interact (также можно установить тег объекта на Interact).
- Добавьте скрипт InteractiveItem.cs и установите для параметра Item Type значение Only Examine.
- С Only Examine вы можете исследовать только объекты, но вы можете установить Examine Type на другие Item Types.
- Есливы установите Examine Type в Advanced Object, вы получите больше параметров проверки.
- Этот скрипт также позволяет установить Examine Type на тип Paper (Бумага).
- Также есть функция для установки направления Examine Rotate(Вращения).
- С помощью функции Face To Camera вы можете установить начальный поворот объекта.
- Позволит изменить в игре Ambience Sound, когда вы входите в определенную комнату.
- Создайте два объекта Trigger.
- Добавьте скрипт AmbienceZone.cs к этим объектам.
- Назначьте Ambience Source, audio source из объекта Player.
- Для первого объекта задайте окружение default(по умолчанию), а для второго - окружение room(комнаты).
МАЛЕНЬКИЙ ПРЫЖОК ИСПУГА
- Создайте объект Trigger.
- Создайте пустой GameObject и переместите в него существо.
- Создайте Jumpscare Animation и добавьте скрипт TriggerAnimation.cs.
- Также можно добавить скрипт TriggerHint.cs, если вы хотите показать подсказку при воспроизведении анимации jumpscare.
JUMPSCARE С ЭФФЕКТОМ
- Вы можете создать его теми же шагами, что и Small Jumpscare, но вместо добавления скрипта TriggerAnimation.cs добавьте скрипт Jumpscare.cs.
- Вы можете установить, как долго игрок будет напуган, установив Scare Level Sec в секундах (Scared Breathing(Испуганное Дыхание)).
- Скрипт Jumpscare связан со скриптом JumpscareEffects.cs в объекте MouseLook.
- Jumpscare управляет Эффектами Camera Shake(Дрожание Камеры), Scared Breath(Испуганное Дыхание) и Scare(Испуг).
- Если у вас есть проблемы с созданием анимации Jumpscare, вы можете перейти на мой канал Youtube и посмотреть мой Jump.
- Если вы хотите добавить новые анимации, просто создайте новый Animator Override Controller и назначьте свои собственные анимации.
ДОБАВЛЕНИЕ НОВОГО ЗОМБИ
- Преобразуйте своего Zombie Character в Ragdoll (GameObject -> 3D Object -> Ragdoll).
- Добавьте необходимые сценарии Zombie Character.
- Установите зомби Tag на Flesh и Layer на Zombie.
- Зомби hips Layer установите на BodyPart.
- В скрипте ZombieBehavior назначьте Animator зомби и установите masks.
- Для примера, посмотрите на префаб Derrick.
- Назначьте Hips в скрипте NPCHealth и установите очки Health(Здоровья) зомби.
- Создайте пустой GameObject и добавьте скрипт WaypointGroup.cs.
- Добавляя пустые GameObjects к объекту, где находится скрипт WaypointGroup, вы автоматически определяете новые waypoints.
- Внутри секции Sensors назначьте waypoints и положение NPC Head.
- Скрипт ZombieBehaviour содержит множество настроек, с которыми вы можете по-экспериментировать.
- Ползунок Intelligence(Разведка) определяет основные настройки разведки зомби как есть (состояние притяжения, переход в состояние точки патрулирования, состояние просмотра, состояние обнаружения звука).
- Intelligence 1 = зомби могут быть привлечены и могут отправиться в патрульную точку.
- Intelligence 2 = зомби повернет в направлении, в котором вы стреляете, зомби слышит упавшие предметы.
- Patrol Point(Патрульная Точка) - это точка, куда направляется зомби, если расстояние между последней увиденной позицией и позицией патрульной точки будет в диапазоне расстояния Patrol Point Detect.
ВЛИЯНИЕ ЗВУКА НА ПРИВЛЕЧЕНИЕ ЗОМБИ
- Добавьте скрипт ImpactEffect.cs к draggable(перетаскиваемому) объекту.
- Если Impact Volume больше, чем расстояние Impact Detect At, удар привлечет зомби.
- Найдите объект WallDetection в объекте Player, который содержит все объекты Оружия/Предметов.
- Дублируйте один из этих предметов и замените отключенный объект внутри дублированного объекта своим собственным оружием или предметом.
- Пометьте свои анимации как legacy и добавьте их к корневому объекту вашего Оружия/Предмета.
- Добавьте ваше новое Оружие/Предмет в Item List вкладки ItemSwitcher.
- Пользовательский скрипт Weapon/Item требует интерфейса ISwitcher.
- Кроме того, если вам нужны дополнительные функции, при ударе о стену вы можете добавить интерфейс ISwitcherWallHit.
- Эти интерфейсы будут автоматически создавать необходимые функции, которые будут управляться скриптом ItemSwitcher.
- Не забудьте добавить свой предмет в Inventory Database и установить Use Switcher ID.
- Отредактируйте или создайте новый ассет Graphic Settings.
- Добавьте новые или отредактируйте текущие Graphic Settings в папке Scriptables.
- Назначьте GraphicSettings скрипт UICustomOptions, расположенному в объекте GAMEMANAGER.
- Измененные графические настройки во время выполнения будут сохранены в файле config.
- Сохранение и Загрузка данных игры является основной функцией во многих играх AAA, с SaveGameHandler.cs вы можете сохранять свои данные игры.
НАСТРОЙКА МЕНЕДЖЕРА SAVE/LOAD
- Создайте новый SaveLoadSettings.
- Появится окно Save/Load Editor.
- В этом окне можно установить основные настройки сохранения.
- Cipher Key(Ключ Шифрования), по соображениям безопасности, зашифрован.
- Новый созданный ресурс настроек, который вам нужно определить в скрипте SaveGameHandler, расположенном в объекте GAMEMANAGER.
ДОБАВЛЕНИЕ НАСТРАИВАЕМЫХ СОХРАНЕНИЙ
- Добавьте интерфейс ISaveable в ваш собственный скрипт.
- Исправьте ошибки, вызванные интерфейсом (VS 17: ALT + ENTER или CTRL +.).
- Это создаст две новые функции OnLoad и OnSave.
- Эти функции являются основными функциями для сохранения и загрузки пользовательских данных.
- Определите, какие данные вы хотите сохранить.
- Ключ Token должен совпадать с ключом, с которым вы сохраняете данные.
СОХРАНЕНИЕ С ИСПОЛЬЗОВАНИЕМ АТРИБУТА
- Этот метод позволяет вам просто сохранять данные скрипта, используя только атрибут.
- Поле должно быть всегда public, иначе менеджер его не найдет.
- Добавьте скрипт SaveObject.cs к объекту.
- Ключ Token должен совпадать с ключом, с которым вы сохраняете данные.
- Добавьте атрибут SaveableField в поле, которое вы хотите сохранить.
- Вы также можете установить поле custom key.
СОХРАНЕНИЕ ДАННЫХ GAMEOBJECT
- С помощью этого метода вы можете сохранить основные данные GameObject.
- Transform, Rigidbody, Position, Rotation и Object/Renderer Active.
- Добавьте скрипт SaveObject.cs к объекту.
- В этом скрипте вы можете указать, какие данные из GameObject вы хотите сохранить.
СОХРАНЕНИЕ ДАННЫХ ИГРЫ
- Выберите Менеджер Saveables из меню Tools.
- Появится окно редактора Saveables.
- Редактор не будет отображаться, когда скрипт SaveGameHandler не будет найден.
- Нажмите кнопку Find Saveables, редактор автоматически найдет все сохраняемые объекты сцены.
- Если редактор найдет какие-либо сохраняемые объекты, сообщение изменится на “SaveGame Handler is set up successfully!”.
- Скрипт SaveGameHandler также покажет, сколько объектов будет сохранено.
- Если вы удалите сохраняемый объект, вам будет предложено снова найти сохраняемые объекты.
- Выберите Save Game из меню Pause.
- Значок дискеты указывает, что игра сохранена правильно.
- Затем вы сможете Загрузить(Load) сохраненную игру из Главного Меню(Main Menu).
- Также вы можете удалить сохраненную игру, если она вам не нужна
- Вы можете отобразить меню Inventory, нажав кнопку TAB, также вы можете изменить эту кнопку непосредственно в Input Mapper или в Pause или Main Menu.
ДОБАВЛЕНИЕ НОВЫХ ПУНКТОВ
- Создайте новый ассет Inventory Database.
- Это создаст новую Inventory Database(Базу Данных) инвентаря в папке Scriptables.
- Внутри этого скриптового ассета вы можете определить новые Inventory Items(Элементы Инвентаря).
- Присвойте новой Inventory Database скрипт Inventory, расположенному в объекте GAMEMANAGER.
- Добавьте сценарий InteractiveItem.cs к объекту элемента и установите для параметра Item Type значение Inventory Item.
- Установите Inevntory ID для определенного номера вашего предмета, который определен в Inevntory Database.
- Идентификатор элемента Inventory Database доступен только для чтения и определяется автоматически сценарием базы данных.
- Если вы измените порядок какого-либо элемента, он автоматически сбросит все идентификаторы элементов с текущим порядком элементов.
РАСШИРЕНИЕ ИНВЕНТАРНЫХ СЛОТОВ
- Вы можете расширить слоты инвентаря, подбирая объект, для которого для Item Type установлен Backpack Expand.
INVENTORY CONTAINERS(ИНВЕНТАРНЫЕ КОНТЕЙНЕРЫ)
- С помощью этого метода вы можете хранить предметы инвентаря на объекте Backpack(Рюкзак).
- Основным скриптом для этого метода является InventoryContainer.cs.
- Также, если вы хотите получить доступ к хранимым элементам везде, где есть конкретный объект, вы можете сделать это, добавив скрипт InventoryFixedContainer.cs к объектам.
КОМБИНАЦИИ ПРЕДМЕТОВ
- Инвентарь имеет функцию объединения двух разных предметов с целью получения другого полезного предмета.
- Это можно сделать, изменив Combine Settings предмета, внутри базы Inventory Database.
- Пример Inventory Database со всеми свойствами включен в ассет.