NPC (postacie niegrywalne) mogą dodać wiele głębi do gry. Wszystkie poniższe NPC mogą być wizualnie dostosowane, ich zachowanie zmodyfikowane, a zombie/żołnierze mogą nawet bronić obszaru, atakując graczy lub inne postacie za pomocą systemu tagów do ustawiania zachowań.
Aby użyć NPC w swojej grze:
Na stronie przedmiotu NPC kliknij zielony przycisk Pobierz i potwierdź transakcję.
W Studio otwórz Narzędzie.
Wybierz sekcję Inwentarz w swoim narzędziu.

Zlokalizuj NPC i kliknij go, aby dodać go do miejsca.
Struktura postaci
Każdy model NPC zazwyczaj zawiera następujące obiekty:
| Nazwa obiektu lub [Typ] | Typ | Opis |
|---|---|---|
| Animacje | Folder | Zawiera Animacje, takie jak AnimacjaAtaku lub AnimacjaŚmierci. |
| Początkowe Pozy | Folder | Zawiera informacje o pozach. |
| Animate | Script | Ładuje i odtwarza animacje na rig postaci. Zobacz Animate po więcej szczegółów. |
| [Akcesorium] | Accessory | Jedno z możliwych wielu Akcesoriów dla NPC, takich jak kapelusze, broń itp. |
| Zdrowie | Script | Zazwyczaj regeneruje zdrowie Humanoid w czasie. Wyłączenie tego uniemożliwi postaci regenerację zdrowia. |
| Humanoid | Humanoid | Zarządza właściwościami związanymi z Humanoid, takimi jak Humanoid.Health, Humanoid.WalkSpeed, Humanoid.DisplayDistanceType itp. |
| NPC | Script | Definiuje specyficzne dla postaci zachowania, takie jak wędrowanie, atakowanie itp. Rodzicem następujących obiektów: Maid (ModuleScript) definiuje klasę przydatną do zwalniania używanych zasobów. Ragdoll (ModuleScript) definiuje funkcję, która przekształca postać w luźne ciało podlegające fizyce (rodzicem jest RigTypes ModuleScript, który definiuje kilka funkcji pomocniczych). |
| RbxNpcSounds | Script | Definiuje i zarządza zachowaniem związanym z efektami dźwiękowymi postaci, takimi jak bieganie, umieranie itp. |
| CzęściCiała | BasePart | Różne części ciała postaci przymocowane do HumanoidRootPart lub sąsiednich części ciała za pomocą Motor6D lub obiektów ograniczających. Zobacz CzęściCiała po więcej szczegółów. |
| HumanoidRootPart | BasePart | Specjalna niewidoczna część, która jest uważana za korzeń rig; to także PrimaryPart modelu Model postaci. |
| Konfiguracja | Configuration | Zawiera obiekty wartości, które dostosowują różne zachowania. Zobacz Konfiguracja po więcej szczegółów. |
Uwagi projektowe
Kiedy używasz zestawu NPC, pamiętaj o następujących uwagach projektowych:
Wizualny wygląd NPC można dostosować, dodając/modyfikując różne obiekty [CzęściCiała] oraz dodając obiekty Accessory.
Żołnierze, Zombie z cieknącą śliną i Roboty NP-C 9000 używają Rthro jako podstawy swojego rig. Jednak Roboty RO-01 używają zmodyfikowanej bazy Rthro, która dodaje części silników połączone z UpperTorso za pomocą WeldConstraints. Używanie prostych stawów w ten sposób pozwala na dodanie dodatkowej geometrii do postaci bez zmiany oryginalnego rig.
Na podstawowym poziomie animacje NPC można dostosować, modyfikując AnimationId istniejących obiektów animacji w ramach poses skryptu Animate lub tych w folderze Animacje. Taka zmiana jest zasadniczo zamianą zasobów - aby zmienić drobne szczegóły, możesz stworzyć niestandardowe kopie istniejących animacji, a aby odtwarzać animacje w różnych warunkach, możesz edytować skrypty Animate lub NPC bezpośrednio. Po więcej informacji zobacz Animacja.
Animate
Skrypt Script Animate w modelu NPC Model obsługuje konfiguracje związane z animacją i zawiera następujące obiekty:
| Nazwa obiektu lub [Typ] | Typ | Opis |
|---|---|---|
| ScaleDampeningPercent | NumberValue | Definiuje, jak prędkości animacji są modyfikowane w miarę skalowania postaci (wartość mniejsza niż 1 oznacza, że odtwarzanie animacji skaluje się odwrotnie w miarę skalowania postaci). |
| PlayEmote | BindableFunction | Może być wywoływana przez inne skrypty w celu wymuszenia przyjęcia pozy. |
| [Poza] | StringValue | Odwołanie do kategorii animacji, która może być odtwarzana, takiej jak bezczynność, skok, chodzenie itp. Ten obiekt może być rodzicem dowolnej liczby Animacji. Te Animacje mają rodzica Waga (NumberValue), która priorytetuje jedną z wielu animacji do odtworzenia podczas przyjmowania pozy; zazwyczaj używane do dodawania różnorodności do pozy bezczynnych i tanecznych. |
CzęściCiała
Część Ciała BasePart w modelu NPC Model reprezentuje różne części ciała postaci i zawiera następujące obiekty:
| Nazwa obiektu lub [Typ] | Typ | Opis |
|---|---|---|
| AvatarPartScaleType | StringValue | Określa, jak część będzie skalowana; wartości mogą być Classic, ProportionsNormal lub ProportionsSlender. |
| OriginalSize | Vector3Value | Określa rozmiar części, gdy skalowanie postaci wynosi 1. |
| [Załącznik] | Attachment | Definiuje punkt w odniesieniu do poszczególnej części, który skrypty, efekty i obiekty, takie jak Tool lub Accessory, mogą wykorzystać podczas pozycjonowania. |
| [Motor6D] | Motor6D | Animowany staw między dwiema częściami ciała. Zauważ, że Animator zależy od nazwy Motor6Ds, aby była zgodna z nazwą Motor6Ds używaną podczas tworzenia animacji, więc unikaj zmiany nazwy tego obiektu. |
| [Staw] | WeldConstraint, Constraint, JointInstance | Niezmienny staw między dwiema częściami ciała. |
| [Dźwięk] | Sound | Najczęściej występuje w głowie lub HumanoidRootPart; odtwarza dźwięki z wnętrza rig, kontrolowane przez skrypt RbxNpcSounds. |
Konfiguracja
Każdy NPC zawiera obiekt Configuration w swojej hierarchii, który działa jako kontener obiektów wartości. Są one używane przez skrypt NPC do dostosowywania różnych zachowań. O ile nie określono inaczej, te zasady mają zastosowanie do wszystkich postaci.
| Nazwa obiektu lub [Typ] | Typ | Opis |
|---|---|---|
| DestroyOnDeath | BoolValue | Powoduje, że cały NPC zostaje zniszczony krótko po jego śmierci. Wyłącz to, aby ragdolle były trwałe. |
| PatrolEnabled | BoolValue | Powoduje, że NPC wędruje w obszarze wokół swojej pozycji początkowej. |
| PatrolRadius | NumberValue | Określa maksymalną odległość, jaką NPC może wędrować od swojej pozycji początkowej, zakładając, że PatrolEnabled jest prawdziwe. |
| RagdollEnabled | BoolValue | Powoduje, że NPC staje się wiotki, gdy umiera, zamiast się rozpaść. |
| AttackDamage | NumberValue | Określa, ile zdrowia traci ofiara, gdy zostaje zaatakowana przez NPC. Dotyczy to tylko zestawów Zombie i Żołnierzy. |
| AttackDelay | NumberValue | Określa minimalną liczbę sekund między strzałami. Dotyczy to tylko zestawów Żołnierzy. |
| AttackMode | NumberValue | Określa, co żołnierz będzie atakować, na podstawie systemu tagowania. Dotyczy to tylko zestawów Żołnierzy. |
| AttackRadius | NumberValue | Określa maksymalną odległość, jaką NPC musi mieć od potencjalnej ofiary, zanim spróbuje zaatakować. Dotyczy to tylko zestawów Zombie i Żołnierzy. |
| ClipCapacity | NumberValue | Określa, ile pocisków żołnierz może wystrzelić, zanim będzie musiał przeładować. Dotyczy to tylko zestawów Żołnierzy. |
| ReloadDelay | NumberValue | Określa, ile sekund musi upłynąć, zanim magazynek broni żołnierza zostanie przeładowany. Dotyczy to tylko zestawów Żołnierzy. |
Przypisz tagi
Skrypt NPC używa tagów CollectionService, aby zarządzać agresją wobec innych postaci i graczy. Różne tagi z poniższej tabeli można przypisać w następujący sposób:
Aby przypisać tag do postaci Player, możesz dodać Script do StarterCharacterScripts z wywołaniem CollectionService:AddTag(). Na przykład:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
| Tag | Cel |
|---|---|
| SoldierEnemy lub SoldierFriend | Określa, czy żołnierz, na podstawie wartości konfiguracyjnej AttackMode, powinien zaatakować inną postać. Gdy AttackMode żołnierza jest ustawione na 1, inne postacie muszą być oznaczone tagiem SoldierEnemy, aby mogły być uznane za atakowalne. Gdy AttackMode żołnierza jest ustawione na 2, wszystkie obiekty bez tagu SoldierFriend są uznawane za atakowalne. Gdy AttackMode żołnierza jest ustawione na 3, te tagi są całkowicie ignorowane, a żołnierz zaatakuje wszystkie postacie. |
| ZombieFriend | Ten tag jest używany przez zombie do określenia, czy nie powinno atakować postaci. Po zastosowaniu zombie staje się łagodne wobec oznaczonej postaci. |



