NPCs (Nicht-Spieler-Charaktere) können einer Erfahrung viel Tiefe verleihen. Alle folgenden NPCs können visuell angepasst, ihr Verhalten geändert und die Zombies/Soldaten können sogar ein Gebiet verteidigen, indem sie Spieler oder andere Charaktere mithilfe eines Tag-Systems angreifen, um das Verhalten festzulegen.
Um einen NPC in deinem Spiel zu verwenden:
Klicke auf der NPC-Artikel-Seite auf die grüne Holen-Schaltfläche und bestätige die Transaktion.
Öffne im Studio das Toolbox.
Wähle den Abschnitt Inventar deiner Toolbox aus.

Suche den NPC und klicke darauf, um ihn in den Ort hinzuzufügen.
Charakterstruktur
Jedes NPC-Modell enthält typischerweise die folgenden Objekte:
| Objektname oder [Typ] | Typ | Beschreibung |
|---|---|---|
| Animationen | Folder | Enthält Animations, wie z.B. eine AttackAnimation oder DeathAnimation. |
| Initialposen | Folder | Enthält Posing-Informationen. |
| Animate | Script | Lädt und spielt Animationen auf dem Charakter-Rig ab. Siehe Animate für weitere Details. |
| [Zubehör] | Accessory | Eines von möglicherweise mehreren Accessories für den NPC, wie Hüte, Waffen usw. |
| Gesundheit | Script | Regeneriert typischerweise die Humanoid Gesundheit über die Zeit. Das Deaktivieren verhindert, dass der Charakter Gesundheit regeneriert. |
| Humanoid | Humanoid | Verwaltet Humanoid-bezogene Eigenschaften wie Humanoid.Health, Humanoid.WalkSpeed, Humanoid.DisplayDistanceType usw. |
| NPC | Script | Definiert charakter-spezifisches Verhalten wie Umherstreifen, Angreifen usw. Beinhaltet folgende Objekte: Maid (ModuleScript) definiert eine Klasse, die nützlich ist, um verwendete Ressourcen freizugeben. Ragdoll (ModuleScript) definiert eine Funktion, die einen Charakter in einen lockeren, physikalisch beeinflussten Körper verwandelt (enthält ein RigTypes ModuleScript, das mehrere Hilfsfunktionen definiert). |
| RbxNpcSounds | Script | Definiert und verwaltet Verhalten, das mit Charaktergeräuschen wie Laufen, Sterben usw. verbunden ist. |
| BodyParts | BasePart | Verschiedene Körperteile des Charakters, die an die HumanoidRootPart oder benachbarte Körperteile durch Motor6D- oder Einschränkungsobjekte angeheftet sind. Siehe BodyParts für mehr Details. |
| HumanoidRootPart | BasePart | Ein spezielles unsichtbares Teil, das als Wurzel des Rigs angesehen wird; dies ist auch das PrimaryPart des Model des Charakters. |
| Konfiguration | Configuration | Enthält Wertobjekte, die verschiedene Verhaltensweisen einstellen. Siehe Konfiguration für weitere Details. |
Entwurfshinweise
Beim Verwenden des NPC-Kits solltest du die folgenden Entwurfshinweise beachten:
Das visuelle Erscheinungsbild eines NPC kann angepasst werden, indem verschiedene [BodyParts]-Objekte hinzugefügt oder geändert werden und Accessory-Objekte hinzugefügt werden.
Die Soldaten, der sabbernde Zombie und die NP-C 9000 Roboter verwenden Rthro als Grundlage ihres Rigs. Die RO-01 Roboter nutzen jedoch eine modifizierte Rthro-Basis, die Trennteile enthält, die mit dem UpperTorso über WeldConstraints verbunden sind. Durch die Verwendung einfacher Gelenke auf diese Weise kannst du zusätzliche Geometrie für deine Charaktere einfügen, ohne das ursprüngliche Basisrig zu ändern.
Auf einer grundlegenden Ebene können die NPC-Animationen angepasst werden, indem die AnimationId vorhandener Animationsobjekte innerhalb der Animate-Skriptposen oder denen innerhalb des Animations-Ordners geändert werden. Eine solche Änderung ist im Wesentlichen ein Asset-Tausch - um die feinen Details zu ändern, kannst du benutzerdefinierte Kopien vorhandener Animationen erstellen, und um Animationen unter unterschiedlichen Bedingungen abzuspielen, kannst du die Animate- oder NPC-Skripte direkt bearbeiten. Für weitere Informationen siehe Animation.
Animate
Das Animate Script im NPC Model behandelt Animation bezogene Konfigurationen und enthält die folgenden Objekte:
| Objektname oder [Typ] | Typ | Beschreibung |
|---|---|---|
| ScaleDampeningPercent | NumberValue | Definiert, wie die Animationsgeschwindigkeiten verändert werden, wenn der Charakter skaliert wird (weniger als 1 bedeutet, dass die Animationse wiedergegeben wird, als ob die Umwandlung umgekehrt ist, wenn der Charakter skaliert wird). |
| PlayEmote | BindableFunction | Kann von anderen Skripten aufgerufen werden, um die Annahme einer Pose zu erzwingen. |
| [Pose] | StringValue | Referenz auf eine spielbare Animationskategorie wie Stehen, Springen, Gehen usw. Dieses Objekt kann beliebig viele Animations als Eltern haben. Diese Animations haben eine Gewichtung (NumberValue) als Eltern, die eine von mehreren Animationen priorisiert, die abgespielt werden sollen, während die Pose angenommen wird; typischerweise verwendet, um Abwechslung zu stehenden und tanzenden Posen hinzuzufügen. |
BodyParts
Die BodyPart BasePart im NPC Model repräsentiert die verschiedenen Körperteile des Charakters und enthält die folgenden Objekte:
| Objektname oder [Typ] | Typ | Beschreibung |
|---|---|---|
| AvatarPartScaleType | StringValue | Bestimmt, wie das Teil skaliert wird; Werte können Classic, ProportionsNormal oder ProportionsSlender sein. |
| OriginalSize | Vector3Value | Bestimmt die Größe des Teils, wenn die Skalierung des Charakters 1 beträgt. |
| [Attachment] | Attachment | Definiert einen Punkt in Bezug auf das einzelne Teil, den Skripte, Effekte und Objekte wie ein Tool oder Accessory während der Positionierung verwenden können. |
| [Motor6D] | Motor6D | Ein animiertes Gelenk zwischen zwei Körperteilen. Beachte, dass Animator vom Namen der Motor6Ds abhängt, um konsistent mit der oben genannten Verwendung zu sein, also vermeide es, dieses Objekt umzubenennen. |
| [Gelenk] | WeldConstraint, Constraint, JointInstance | Ein nicht-animiertes Gelenk zwischen zwei Körperteilen. |
| [Sound] | Sound | Findet sich häufig im Kopf oder HumanoidRootPart; spielt Geräusche aus dem Rig ab, die vom RbxNpcSounds-Skript gesteuert werden. |
Konfiguration
Jedes NPC enthält ein Configuration-Objekt innerhalb seiner Hierarchie, das als Container für Wertobjekte dient. Diese werden vom NPC-Skript verwendet, um verschiedene Verhaltensweisen einzustellen. Sofern nicht anders angegeben, gelten diese für alle Charaktere.
| Objektname oder [Typ] | Typ | Beschreibung |
|---|---|---|
| DestroyOnDeath | BoolValue | Veranlasst, dass das gesamte NPC kurz nach seinem Tod zerstört wird. Deaktiviere dies, damit Ragdolls persistent bleiben. |
| PatrolEnabled | BoolValue | Veranlasst das NPC, sich in einem Bereich um seine Startposition zu bewegen. |
| PatrolRadius | NumberValue | Definiert die maximale Distanz, die ein NPC von seiner Startposition abweichen kann, sofern PatrolEnabled aktiv ist. |
| RagdollEnabled | BoolValue | Veranlasst das NPC, beim Sterben schlaff zu werden, anstatt auseinanderzufallen. |
| AttackDamage | NumberValue | Definiert, wie viel Gesundheit ein Opfer verliert, wenn es vom NPC angegriffen wird. Das gilt nur für Zombie- und Soldaten-Kits. |
| AttackDelay | NumberValue | Definiert die minimale Anzahl an Sekunden zwischen Schüssen. Das gilt nur für Soldaten-Kits. |
| AttackMode | NumberValue | Bestimmt, was der Soldat angreifen wird, basierend auf dem Tagging-System. Das gilt nur für Soldaten-Kits. |
| AttackRadius | NumberValue | Definiert die maximale Distanz, die das NPC von einem potenziellen Opfer entfernt sein muss, bevor es versucht anzugreifen. Das gilt nur für Zombie- und Soldaten-Kits. |
| ClipCapacity | NumberValue | Definiert, wie viele Kugeln der Soldat feuern kann, bevor er nachladen muss. Das gilt nur für Soldaten-Kits. |
| ReloadDelay | NumberValue | Definiert, wie viele Sekunden vergehen müssen, bevor der Waffenspeicher des Soldaten nachgeladen wird. Das gilt nur für Soldaten-Kits. |
Tags zuweisen
Das NPC-Skript verwendet CollectionService-Tags, um die Aggressivität gegenüber anderen Charakteren und Spielern zu verwalten. Verschiedene Tags aus der folgenden Tabelle können wie folgt zugewiesen werden:
Um ein Tag zu einem Player-Charakter zuzuweisen, kannst du ein Script zu StarterCharacterScripts hinzufügen, das einen CollectionService:AddTag()-Aufruf enthält. Zum Beispiel:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
| Tag | Zweck |
|---|---|
| SoldierEnemy oder SoldierFriend | Bestimmt, ob ein Soldat, basierend auf seinem AttackMode-Konfigurationswert, einen anderen Charakter angreifen sollte. Wenn der AttackMode des Soldaten auf 1 eingestellt ist, müssen andere Charaktere mit SoldierEnemy getaggt werden, um als angreifbar betrachtet zu werden. Wenn der AttackMode des Soldaten auf 2 eingestellt ist, werden alle Objekte ohne das SoldierFriend-Tag als angreifbar betrachtet. Wenn der AttackMode des Soldaten auf 3 eingestellt ist, werden diese Tags vollständig ignoriert und der Soldat wird alle Charaktere angreifen. |
| ZombieFriend | Dieses Tag wird vom Zombie verwendet, um zu bestimmen, ob er einen Charakter nicht angreifen sollte. Wenn angewendet, wird der Zombie gegenüber dem taggierten Charakter friedlich. |



