NPC (Non-player character)

Персонажі, які не є гравцями


NPC (персонажі, які не є гравцями) можуть додати досвіду багато глибини. Усіх наступних NPC можна візуально налаштувати, змінити їх поведінку , а зомбі/солдати можуть навіть захищати територію, атакуючи гравців або інших персонажів, використовуючи систему тегів для встановлення поведінки.

Щоб використовувати NPC у грі:
  1. Виберіть один із наступних наборів NPC:

    Drooling Zombie
    Soldiers
    RO-01 Robots
    NP-C 9000 Robots
  2. На сторінці предметів NPC натисніть зелену кнопку «Отримати» та підтвердьте транзакцію.

  3. У Roblox Studio відкрийте панель інструментів ( Перегляд → Панель інструментів ).

  4. Виберіть розділ «Інвентаризація» панелі інструментів .

  5. Знайдіть NPC і клацніть його, щоб додати його в місце.

Структура персонажа

Кожна модель NPC зазвичай містить такі об’єкти:

Ім'я об'єкта або [Тип]Типопис
AnimationsFolderМістить анімацію , наприклад AttackAnimation або DeathAnimation .
Initial Poses
(Початкові пози)
FolderМістить інформацію про позування.
AnimateScriptЗавантажує та відтворює анімацію на платформі персонажа. Дивіться Animate для отримання додаткової інформації.
[Accessory]AccessoryОдин із, можливо, кількох аксесуарів для NPC, таких як капелюхи, зброя тощо.
HealthScriptЗазвичай з часом відновлює здоров’я гуманоїда . Якщо вимкнути це, персонаж не зможе відновити здоров’я.
HumanoidHumanoidКерує пов’язаними з Humanoid властивостями, такими як Humanoid.Health , Humanoid.WalkSpeed , Humanoid.DisplayDistanceType тощо.
NPCScript

Визначає специфічну поведінку персонажа, як-от роумінг, атаку тощо. Батьки таких об’єктів:

Maid ( ModuleScript ) визначає клас, корисний для звільнення використаних ресурсів.

Ragdoll ( ModuleScript ) визначає функцію, яка перетворює персонажа на вільне фізичне тіло (батьки RigTypes ModuleScript , який визначає кілька допоміжних функцій).

RbxNpcSoundsScriptВизначає та керує поведінкою, пов’язаною зі звуковими ефектами персонажа, такими як біг, смерть тощо.
BodyPartsBasePartРізні частини тіла персонажа, прикріплені до HumanoidRootPart або сусідніх частин тіла через Motor6D або об’єкти обмежень. Для отримання додаткової інформації дивіться BodyParts .
HumanoidRootPartBasePartОсоблива невидима частина, яка вважається основою ригу; це також первинна частина моделі персонажа .
ConfigurationConfigurationМістить об’єкти значень, які налаштовують різні поведінки. Додаткову інформацію див. у розділі Конфігурація .

Конфігурація

Кожен NPC містить об’єкт Configuration у своїй ієрархії, який діє як контейнер об’єктів значення. Вони використовуються сценарієм NPC для налаштування різних дій. Якщо не вказано інше, вони застосовуються до всіх символів.
Ім'я об'єкта або [Тип]Типопис
DestroyOnDeathBoolValueСпричиняє знищення всього NPC незабаром після його смерті. Вимкніть це, щоб регдолли були постійними.
PatrolEnabledBoolValueЗмушує NPC блукати в області навколо його вихідної позиції.
PatrolRadiusNumberValueВизначає максимальну відстань, на яку NPC буде блукати від початкової позиції, припускаючи, що параметр PatrolEnabled вірний.
RagdollEnabledBoolValueКоли NPC вмирає, він стає млявим, а не розпадається.
AttackDamageNumberValueВизначає, скільки здоров'я втрачає жертва під час атаки NPC. Це стосується лише наборів «Зомбі» та «Солдат».
AttackDelayNumberValueВизначає мінімальну кількість секунд між пострілами. Це стосується лише комплектів солдатів.
AttackModeNumberValueВизначає, що солдат буде атакувати, на основі системи позначення . Це стосується лише комплектів солдатів.
AttackRadiusNumberValueВизначає максимальну відстань, на якій NPC має бути від потенційної жертви, перш ніж спробує атакувати. Це стосується лише наборів «Зомбі» та «Солдат».
ClipCapacityNumberValueВизначає, скільки куль солдат може вистрілити, перш ніж потрібно буде перезарядити. Це стосується лише комплектів солдатів.
ReloadDelayNumberValueВизначає, скільки секунд має пройти до перезарядки обойми зброї солдата. Це стосується лише комплектів солдатів.

Призначення тегів

Сценарій NPC використовує теги CollectionService для управління агресією по відношенню до інших персонажів і гравців. Різні теги з наведеної нижче таблиці можна призначати наступним чином:

Щоб призначити теги іншому NPC, призначте їх моделі верхнього рівня NPC за допомогою розділу «Теги» його властивостей або редактора тегів Studio .

Щоб призначити тег персонажу гравця , ви можете додати сценарій до StarterCharacterScripts за допомогою виклику CollectionService:AddTag()

Наприклад:

local CollectionService = game:GetService("CollectionService")
CollectionService:AddTag(script.Parent, "SoldierEnemy")

Тегпризначення
SoldierEnemy або SoldierFriend

Визначає, чи повинен солдат атакувати іншого персонажа, виходячи зі значення конфігурації AttackMode . Коли режим атаки солдата встановлений на 1 , інші персонажі повинні бути позначені тегом SoldierEnemy , щоб вважатися такими, що можна атакувати. Коли режим атаки солдата встановлено на 2 , усі об’єкти без тегу SoldierFriend вважаються такими, що піддаються атаці. Коли режим атаки солдата встановлено на 3 , ці теги повністю ігноруються, і солдат атакуватиме всіх персонажів.

ZombieFriendЦей тег використовується зомбі, щоб визначити, чи не варто йому атакувати персонажа. Після застосування зомбі стає слухняним до позначеного персонажа.