Gli NPC (personaggi non giocanti) possono aggiungere molta profondità a un'esperienza. Tutti i seguenti NPC possono essere personalizzati visivamente, il loro comportamento può essere modificato e gli zombie/soldati possono persino difendere un'area attaccando i giocatori o altri personaggi utilizzando un sistema di tag per impostare il comportamento.
Per utilizzare un NPC nel tuo gioco:
Nella pagina dell'oggetto NPC, fai clic sul pulsante verde Ottieni e conferma la transazione.
In Studio, apri il Toolbox.
Seleziona la sezione Inventario del tuo toolbox.

Individua l'NPC e cliccaci sopra per aggiungerlo nel posto.
Struttura del personaggio
Ogni modello NPC contiene tipicamente i seguenti oggetti:
| Nome oggetto o [Tipo] | Tipo | Descrizione |
|---|---|---|
| Animazioni | Folder | Contiene Animazioni, come un AttackAnimation o DeathAnimation. |
| Pose Iniziali | Folder | Contiene informazioni di posizionamento. |
| Animate | Script | Carica e riproduce animazioni sul rig del personaggio. Vedi Animate per ulteriori dettagli. |
| [Accessorio] | Accessory | Uno dei possibili diversi Accessori per l'NPC come cappelli, armi, ecc. |
| Salute | Script | Rigenera tipicamente la salute del Humanoid nel tempo. Disabilitare questo impedisce al personaggio di rigenerare salute. |
| Umanoide | Humanoid | Gestisce le proprietà relative all'Humanoid, come Humanoid.Health, Humanoid.WalkSpeed, Humanoid.DisplayDistanceType, ecc. |
| NPC | Script | Definisce comportamenti specifici del personaggio, come vagare, attaccare, ecc. Parent il seguente oggetto: Maid (ModuleScript) definisce una classe utile per rilasciare risorse utilizzate. Ragdoll (ModuleScript) definisce una funzione che trasforma un personaggio in un corpo informale influenzato dalla fisica (parenta un RigTypes ModuleScript che definisce diverse funzioni di supporto). |
| RbxNpcSounds | Script | Definisce e gestisce il comportamento relativo agli effetti sonori del personaggio come correre, morire, ecc. |
| BodyParts | BasePart | Diverse parti del corpo del personaggio attaccate al HumanoidRootPart o a parti del corpo vicine tramite oggetti Motor6D o vincoli. Vedi BodyParts per ulteriori dettagli. |
| HumanoidRootPart | BasePart | Una parte speciale invisibile considerata la radice del rig; questa è anche la PrimaryPart del Model del personaggio. |
| Configurazione | Configuration | Contiene oggetti valore che regolano vari comportamenti. Vedi Configurazione per ulteriori dettagli. |
Note di design
Quando utilizzi il kit NPC, tieni a mente le seguenti note di design:
L'aspetto visivo di un NPC può essere personalizzato aggiungendo/modificando vari oggetti [BodyParts] e aggiungendo oggetti Accessory.
I Soldati, Zombie che sbava e Robot NP-C 9000 utilizzano Rthro come base del loro rig. Tuttavia, i Robot RO-01 utilizzano una base Rthro modificata che aggiunge parti di razzo collegate all'UpperTorso usando WeldConstraints. Utilizzare giunti semplici in questo modo ti consente di includere ulteriore geometria per i tuoi personaggi senza modificare il rig di base originale.
A un livello base, le animazioni NPC possono essere personalizzate modificando l'AnimationId degli oggetti Animazione esistenti all'interno delle pose dello script Animate o di quelle all'interno della cartella Animazioni. Tale cambiamento è essenzialmente uno scambio di asset - per modificare i dettagli minori, puoi creare copie personalizzate delle animazioni esistenti e per riprodurre animazioni in diverse condizioni, puoi modificare direttamente gli script Animate o NPC. Per maggiori informazioni, vedi Animazione.
Animate
Lo script Script Animate nel Model NPC gestisce le configurazioni relative all'animazione e contiene i seguenti oggetti:
| Nome oggetto o [Tipo] | Tipo | Descrizione |
|---|---|---|
| ScaleDampeningPercent | NumberValue | Definisce come le velocità delle animazioni vengono modificate man mano che il personaggio viene scalato (un valore inferiore a 1 implica che la riproduzione dell'animazione scala inversamente man mano che un personaggio viene scalato). |
| PlayEmote | BindableFunction | Questo può essere invocato da altri script per forzare l'assunzione di una posa. |
| [Pose] | StringValue | Riferimento a una categoria di animazione riproducibile come fermo, salto, camminare, ecc. Questo oggetto può parentare un numero qualsiasi di Animazioni. Queste Animazioni parentano un Weight (NumberValue) che priorizza una delle molteplici animazioni da riprodurre mentre la posa è assunta; tipicamente usato per aggiungere varietà alle pose ferme e di danza. |
BodyParts
La parte del corpo BasePart nel Model NPC rappresenta le varie parti del corpo del personaggio e contiene i seguenti oggetti:
| Nome oggetto o [Tipo] | Tipo | Descrizione |
|---|---|---|
| AvatarPartScaleType | StringValue | Determina come la parte sarà scalata; i valori possono essere Classic, ProportionsNormal, o ProportionsSlender. |
| OriginalSize | Vector3Value | Determina la dimensione della parte quando la scala del personaggio è 1. |
| [Attachment] | Attachment | Definisce un punto relativo alla parte individuale che script, effetti, e oggetti come un Tool o Accessory possono utilizzare durante il posizionamento. |
| [Motor6D] | Motor6D | Una giuntura animata tra due parti del corpo. Nota che Animator dipende dal nome dei Motor6Ds per essere coerente con quello dei Motor6Ds utilizzati quando è stata creata un'animazione, quindi evita di rinominare questo oggetto. |
| [Joint] | WeldConstraint, Constraint, JointInstance | Una giuntura non animata tra due parti del corpo. |
| [Sound] | Sound | Comunemente trovato nella testa o HumanoidRootPart; riproduce suoni all'interno del rig come controllato dallo script RbxNpcSounds. |
Configurazione
Ogni NPC include un oggetto Configuration all'interno della sua gerarchia che funge da contenitore di oggetti valore. Questi vengono utilizzati dallo script NPC per regolare vari comportamenti. A meno che non sia specificato diversamente, questi si applicano a tutti i personaggi.
| Nome oggetto o [Tipo] | Tipo | Descrizione |
|---|---|---|
| DestroyOnDeath | BoolValue | Causes l'intero NPC a essere distrutto poco dopo la sua morte. Disabilita questo per fare in modo che i ragdoll siano persistenti. |
| PatrolEnabled | BoolValue | Fa sì che l'NPC vaghi in un'area intorno alla sua posizione di partenza. |
| PatrolRadius | NumberValue | Definisce la massima distanza che un NPC può vagabondare dalla sua posizione di partenza, assumendo che PatrolEnabled sia vero. |
| RagdollEnabled | BoolValue | Fa sì che l'NPC diventi floscio quando muore, invece di rompersi in pezzi. |
| AttackDamage | NumberValue | Definisce quanto salute viene persa da una vittima quando attaccata dall'NPC. Questo si applica solo ai kit Zombie e Soldati. |
| AttackDelay | NumberValue | Definisce il numero minimo di secondi tra i colpi. Questo si applica solo ai kit Soldati. |
| AttackMode | NumberValue | Specifica cosa attaccherà il soldato, basato sul sistema di tagging. Questo si applica solo ai kit Soldati. |
| AttackRadius | NumberValue | Definisce la massima distanza che l'NPC deve avere da una potenziale vittima prima di tentare di attaccare. Questo si applica solo ai kit Zombie e Soldati. |
| ClipCapacity | NumberValue | Definisce quanti proiettili il soldato può sparare prima di aver bisogno di ricaricare. Questo si applica solo ai kit Soldati. |
| ReloadDelay | NumberValue | Definisce quanti secondi devono passare prima che il caricatore dell'arma del soldato venga ricaricato. Questo si applica solo ai kit Soldati. |
Assegna tag
Lo script NPC utilizza i tag del CollectionService per gestire l'aggressività verso altri personaggi e giocatori. Vari tag della seguente tabella possono essere assegnati come segue:
Per assegnare un tag a un personaggio Player, puoi aggiungere un Script a StarterCharacterScripts con una chiamata a CollectionService:AddTag(). Ad esempio:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldatoNemico")
| Tag | Scopo |
|---|---|
| SoldatoNemico o SoldatoAmico | Determina se un soldato, basato sul suo valore di configurazione AttackMode, dovrebbe attaccare un altro personaggio. Quando AttackMode del soldato è impostato su 1, altri personaggi devono essere contrassegnati con SoldatoNemico per essere considerati attaccabili. Quando AttackMode del soldato è impostato su 2, tutti gli oggetti senza il tag SoldatoAmico vengono considerati attaccabili. Quando AttackMode del soldato è impostato su 3, questi tag vengono completamente ignorati e il soldato attaccherà tutti i personaggi. |
| ZombieAmico | Questo tag è utilizzato dallo zombie per determinare se non dovrebbe attaccare un personaggio. Quando applicato, lo zombie diventa docile verso il personaggio contrassegnato. |



