NPC (postacie niegracza) mogą dodać wiele głębi do doświadczenia. Wszystkie następujące NPC mogą być wizualnie dostosowywane, ich zachowanie modyfikowane, a zombie/żołnierze mogą nawet bronić obszaru, atakując graczy lub inne postacie, używając systemu tagów do ustawiania zachowania.
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ę Zasoby w swoim narzędziu.

Zlokalizuj NPC i kliknij go, aby dodać 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 regenerowanie zdrowia. |
| Humanoid | Humanoid | Zarządza właściwościami związanymi z Humanoid, takimi jak Humanoid.Health, Humanoid.WalkSpeed, Humanoid.DisplayDistanceType, itd. |
| NPC | Script | Definiuje specyficzne dla postaci zachowania, takie jak wędrowanie, atakowanie itp. Rodziczuje następujące obiekty: Maid (ModuleScript) definiuje klasę użyteczną do zwalniania używanych zasobów. Ragdoll (ModuleScript) definiuje funkcję, która przekształca postać w luźne ciało podlegające prawom fizyki (rodzicuje 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 podłączone do HumanoidRootPart lub sąsiednich części ciała przez obiekty Motor6D lub constraint. Zobacz CzęściCiała po więcej szczegółów. |
| HumanoidRootPart | BasePart | Specjalna niewidoczna część, która jest uznawana za rdzeń rig; jest to również 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
Podczas korzystania z zestawu NPC, pamiętaj o następujących uwagach projektowych:
Wizualny wygląd NPC można dostosować poprzez dodawanie/modyfikowanie różnych obiektów [CzęściCiała] i dodawanie obiektów Accessory.
Żołnierze, Kapczący Zombie 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 odrzutowe połączone z UpperTorso za pomocą WeldConstraints. Użycie prostych stawów w ten sposób pozwala na włączenie dodatkowej geometrii dla twoich postaci bez zmiany oryginalnego rig.
Na podstawowym poziomie, animacje NPC można dostosować przez modyfikację AnimationId istniejących obiektów animacji w poses skryptu Animate, lub tych w folderze Animacje. Takie zmiany to zasadniczo zamiana zasobów - aby zmienić bardziej szczegółowe elementy, można utworzyć własne kopie istniejących animacji, a aby odtwarzać animacje w różnych warunkach, można edytować skrypty Animate lub NPC bezpośrednio. Więcej informacji znajdziesz w Animacji.
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 | Określa, w jaki sposób prędkość animacji jest modyfikowana w miarę skalowania postaci (wartość mniejsza niż 1 implikuje, że odtwarzanie animacji skaluje się odwrotnie w miarę skalowania postaci). |
| PlayEmote | BindableFunction | Można go wywołać z innych skryptów, aby wymusić przyjęcie pozy. |
| [Poza] | StringValue | Odniesienie do kategorii odtwarzalnej animacji, takiej jak stanie, skakanie, chodzenie itd. Ten obiekt może mieć jako rodzic dowolną liczbę Animacji. Te Animacje mają jako rodzic Wagę (NumberValue), która priorytetyzuje jedną z wielu animacji do odtwarzania, gdy przyjmowana jest poza; zazwyczaj używane do dodawania różnorodności do poz stojących i tańca. |
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ć Klasyczne, ProporcjeNormalne lub ProporcjeSzczuple. |
| OriginalSize | Vector3Value | Określa rozmiar części, gdy skalowanie postaci wynosi 1. |
| [Załącznik] | Attachment | Definiuje punkt w odniesieniu do indywidualnej części, który skrypty, efekty i obiekty, takie jak Tool lub Accessory, mogą wykorzystywać podczas pozycji. |
| [Motor6D] | Motor6D | Animowane połączenie między dwiema częściami ciała. Należy pamiętać, że Animator zależy od nazwy Motor6Ds, aby była zgodna z nazwą używaną podczas tworzenia animacji, więc unikaj zmiany nazwy tego obiektu. |
| [Szwed] | WeldConstraint, Constraint, JointInstance | Nienańsawane połączenie między dwiema częściami ciała. |
| [Dźwięk] | Sound | Najczęściej znajduje się w głowie lub HumanoidRootPart; odtwarza dźwięki z wnętrza rig w kontrolowany sposób przez skrypt RbxNpcSounds. |
Konfiguracja
Każdy NPC zawiera obiekt Configuration w swojej hierarchii, który działa jako kontener obiektów wartości. Te są używane przez skrypt NPC do dostosowywania różnych zachowań. O ile nie określono inaczej, te prawa odnoszą się do wszystkich postaci.
| Nazwa obiektu lub [Typ] | Typ | Opis |
|---|---|---|
| DestroyOnDeath | BoolValue | Powoduje, że cały NPC jest niszczony krótko po jego śmierci. Wyłącz to dla ragdolli, aby były trwałe. |
| PatrolEnabled | BoolValue | Powoduje, że NPC wędruje w obszarze wokół swojej początkowej pozycji. |
| PatrolRadius | NumberValue | Określa maksymalną odległość, jaką NPC może wędrować od swojej początkowej pozycji, zakładając, że PatrolEnabled jest prawdą. |
| RagdollEnabled | BoolValue | Powoduje, że NPC staje się bezwładny po śmierci, zamiast rozpadać się. |
| AttackDamage | NumberValue | Określa, ile zdrowia traci ofiara, gdy jest atakowana 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 kul żołnierz może wystrzelić przed koniecznością przeładowania. 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 do zarządzania agresją wobec innych postaci i graczy. Różne tagi z poniższej tabeli mogą być przypisywane 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 atakować inną postać. Kiedy AttackMode żołnierza jest ustawione na 1, inne postacie muszą być oznaczone tagiem SoldierEnemy, aby były uważane za atakowalne. Kiedy AttackMode żołnierza jest ustawione na 2, wszystkie obiekty bez tagu SoldierFriend są uważane za atakowalne. Kiedy 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, aby określić, czy nie powinno atakować danej postaci. Po zastosowaniu, zombie staje się łagodne w stosunku do oznaczonej postaci. |



