Les NPC (personnages non-joueurs) peuvent apporter beaucoup de profondeur à une expérience. Tous les NPC suivants peuvent être personnalisés visuellement, leur comportement modifié, et les zombies/soldats peuvent même défendre une zone en attaquant des joueurs ou d'autres personnages à l'aide d'un système de tags pour définir le comportement.
Pour utiliser un NPC dans votre jeu :
Sur la page de l'article NPC, cliquez sur le bouton vert Obtenir et confirmez la transaction.
Dans Studio, ouvrez le Toolbox.
Sélectionnez la section Inventaire de votre toolbox.

Localisez le NPC et cliquez dessus pour l'ajouter dans l'endroit.
Structure du personnage
Chaque modèle NPC contient généralement les objets suivants :
| Nom de l'objet ou [Type] | Type | Description |
|---|---|---|
| Animations | Folder | Contient Animations, comme une AttackAnimation ou DeathAnimation. |
| Poses initiales | Folder | Contient des informations de pose. |
| Animate | Script | Charge et joue des animations sur le rig du personnage. Voir Animate pour plus de détails. |
| [Accessoire] | Accessory | Un des plusieurs Accessories possibles pour le NPC, tels que des chapeaux, des armes, etc. |
| Santé | Script | Régénère généralement la santé Humanoid au fil du temps. Désactiver cela empêchera le personnage de régénérer sa santé. |
| Humanoïde | Humanoid | Gère les propriétés liées à Humanoid, telles que Humanoid.Health, Humanoid.WalkSpeed, Humanoid.DisplayDistanceType, etc. |
| NPC | Script | Définit des comportements spécifiques au personnage, tels que vagabonder, attaquer, etc. Parent les objets suivants : Maid (ModuleScript) définit une classe utile pour libérer les ressources utilisées. Ragdoll (ModuleScript) définit une fonction qui transforme un personnage en un corps affecté par la physique (parent d'un RigTypes ModuleScript qui définit plusieurs fonctions d'assistance). |
| RbxNpcSounds | Script | Définit et gère le comportement lié aux effets sonores du personnage comme courir, mourir, etc. |
| BodyParts | BasePart | Diverses parties du corps du personnage attachées à la HumanoidRootPart ou à des parties du corps voisines par l'intermédiaire d'objets Motor6D ou de contrainte. Voir BodyParts pour plus de détails. |
| HumanoidRootPart | BasePart | Une partie spéciale invisible considérée comme la racine du rig ; c'est aussi la PrimaryPart du Model du personnage. |
| Configuration | Configuration | Contient des objets de valeur qui ajustent divers comportements. Voir Configuration pour plus de détails. |
Notes de conception
Lors de l'utilisation du kit NPC, gardez à l'esprit les notes de conception suivantes :
L'apparence visuelle d'un NPC peut être personnalisée en ajoutant/modifiant divers objets [BodyParts] et en ajoutant des objets Accessory.
Les Soldats, le Zombie Baveux, et les Robots NP-C 9000 utilisent Rthro comme base de leur rig. Cependant, les Robots RO-01 utilisent une base Rthro modifiée qui ajoute des pièces de propulseur connectées au UpperTorso à l'aide de WeldConstraints. L'utilisation de joints simples de cette manière vous permet d'inclure une géométrie supplémentaire pour vos personnages sans changer le rig de base original.
À un niveau de base, les animations des NPC peuvent être personnalisées en modifiant l'AnimationId des objets Animation existants dans les poses du script Animate, ou ceux dans le dossier Animations. Un tel changement est essentiellement un échange d'actifs - pour changer les détails plus fins, vous pouvez créer des copies personnalisées des animations existantes, et pour jouer des animations sous différentes conditions, vous pouvez modifier les scripts Animate ou NPC directement. Pour plus d'informations, voir Animation.
Animer
Le script Script Animate dans le Model des NPC gère les configurations liées à l'animation et contient les objets suivants :
| Nom de l'objet ou [Type] | Type | Description |
|---|---|---|
| ScaleDampeningPercent | NumberValue | Définit comment les vitesses d'animation sont modifiées à mesure que le personnage est redimensionné (moins de 1 implique que la lecture des animations se redimensionne de manière inverse à celle du personnage). |
| PlayEmote | BindableFunction | Cela peut être invoqué par d'autres scripts pour forcer l'adoption d'une pose. |
| [Pose] | StringValue | Référence à une catégorie d'animation jouable, comme idle, jump, walk, etc. Cet objet peut parent toute un nombre Animations. Ces Animations parent un Poids (NumberValue) qui priorise l'une des plusieurs animations à jouer pendant que la pose est adoptée ; utilisé typiquement pour ajouter de la variété aux poses d'attente et de danse. |
BodyParts
Le BodyPart BasePart dans le Model des NPC représente les différentes parties du corps du personnage et contient les objets suivants :
| Nom de l'objet ou [Type] | Type | Description |
|---|---|---|
| AvatarPartScaleType | StringValue | Détermine comment la partie sera redimensionnée ; les valeurs peuvent être Classic, ProportionsNormal, ou ProportionsSlender. |
| Taille originale | Vector3Value | Détermine la taille de la partie lorsque le redimensionnement du personnage est 1. |
| [Attachment] | Attachment | Définit un point par rapport à la partie individuelle que les scripts, effets et objets tels qu'un Tool ou Accessory peuvent utiliser lors du positionnement. |
| [Motor6D] | Motor6D | Un joint animé entre deux parties du corps. Notez que Animator dépend du nom des Motor6Ds pour être cohérent avec ceux des Motor6Ds utilisés lors de la création d'une animation, donc évitez de renommer cet objet. |
| [Joint] | WeldConstraint, Constraint, JointInstance | Un joint non animé entre deux parties du corps. |
| [Son] | Sound | Souvent trouvé dans la tête ou HumanoidRootPart ; joue des sons à l'intérieur du rig comme contrôlé par le script RbxNpcSounds. |
Configuration
Chaque NPC inclut un objet Configuration dans sa hiérarchie qui sert de conteneur d'objets de valeur. Ceux-ci sont utilisés par le script NPC pour ajuster divers comportements. Sauf indication contraire, ceux-ci s'appliquent à tous les personnages.
| Nom de l'objet ou [Type] | Type | Description |
|---|---|---|
| DestroyOnDeath | BoolValue | Fait que l'ensemble du NPC est détruit peu après sa mort. Désactivez ceci pour que les ragdolls soient persistants. |
| PatrolEnabled | BoolValue | Fait que le NPC vagabonde dans une zone autour de sa position de départ. |
| PatrolRadius | NumberValue | Définit la distance maximale qu'un NPC errera de sa position de départ, en supposant que PatrolEnabled est vrai. |
| RagdollEnabled | BoolValue | Fait que le NPC devient inerte lorsqu'il meurt, au lieu de se disloquer. |
| AttackDamage | NumberValue | Définit combien de santé est perdue par une victime lorsqu'elle est attaquée par le NPC. Cela s'applique uniquement aux kits Zombie et Soldat. |
| AttackDelay | NumberValue | Définit le nombre minimum de secondes entre les tirs. Cela s'applique uniquement aux kits Soldat. |
| AttackMode | NumberValue | Spécifie quel soldat attaquera, basé sur la configuration du système de tagging. Cela s'applique uniquement aux kits Soldat. |
| AttackRadius | NumberValue | Définit la distance maximale à laquelle le NPC doit être d'une potentielle victime avant d'essayer d'attaquer. Cela s'applique uniquement aux kits Zombie et Soldat. |
| ClipCapacity | NumberValue | Définit combien de balles le soldat peut tirer avant de devoir recharger. Cela s'applique uniquement aux kits Soldat. |
| ReloadDelay | NumberValue | Définit combien de secondes doivent passer avant que le chargeur de l'arme du soldat soit rechargé. Cela s'applique uniquement aux kits Soldat. |
Assigner des tags
Le script NPC utilise les tags CollectionService pour gérer l'agression envers d'autres personnages et joueurs. Divers tags du tableau suivant peuvent être assignés comme suit :
Pour attribuer un tag à un personnage Player, vous pouvez ajouter un Script à StarterCharacterScripts avec un appel CollectionService:AddTag(). Par exemple :
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
| Tag | Objectif |
|---|---|
| SoldierEnemy ou SoldierFriend | Détermine si un soldat, basé sur sa valeur de configuration AttackMode, doit attaquer un autre personnage. Lorsque le AttackMode du soldat est défini sur 1, d'autres personnages doivent être tagués avec SoldierEnemy pour être considérés comme attaquables. Lorsque le AttackMode du soldat est défini sur 2, tous les objets sans le tag SoldierFriend sont considérés comme attaquables. Lorsque le AttackMode du soldat est défini sur 3, ces tags sont complètement ignorés et le soldat attaquera tous les personnages. |
| ZombieFriend | Ce tag est utilisé par le zombie pour déterminer s'il ne doit pas attaquer un personnage. Lorsqu'il est appliqué, le zombie devient docile envers le personnage tagué. |



