NPCs (personagens não jogáveis) podem adicionar muita profundidade a uma experiência. Todos os seguintes NPCs podem ser personalizáveis visualmente, seu comportamento modificado, e os zumbis/soldados podem até defender uma área atacando jogadores ou outros personagens usando um sistema de tags para definir o comportamento.
Para usar um NPC em seu jogo:
Na página do item do NPC, clique no botão verde Obter e confirme a transação.
No Studio, abra a Caixa de Ferramentas.
Selecione a seção Inventário da sua caixa de ferramentas.

Localize o NPC e clique nele para adicioná-lo ao lugar.
Estrutura do personagem
Cada modelo de NPC normalmente contém os seguintes objetos:
| Nome do objeto ou [Tipo] | Tipo | Descrição |
|---|---|---|
| Animações | Folder | Contém Animações, como uma AttackAnimation ou DeathAnimation. |
| Poses Iniciais | Folder | Contém informações de pose. |
| Animate | Script | Carrega e toca animações no rig do personagem. Veja Animate para mais detalhes. |
| [Acessório] | Accessory | Um dos possivelmente múltiplos Acessórios para o NPC, como chapéus, armas, etc. |
| Saúde | Script | Regenera tipicamente a saúde do Humanoid ao longo do tempo. Desabilitar isso impedirá que o personagem regenere saúde. |
| Humanoide | Humanoid | Gerencia propriedades relacionadas ao Humanoid, como Humanoid.Health, Humanoid.WalkSpeed, Humanoid.DisplayDistanceType, etc. |
| NPC | Script | Define comportamentos específicos do personagem, como vagar, atacar, etc. É pai dos seguintes objetos: Maid (ModuleScript) define uma classe útil na liberação de recursos utilizados. Ragdoll (ModuleScript) define uma função que transforma um personagem em um corpo solto afetado pela física (pai de um RigTypes ModuleScript que define várias funções auxiliares). |
| RbxNpcSounds | Script | Define e gerencia o comportamento relacionado aos efeitos sonoros do personagem, como correr, morrer, etc. |
| BodyParts | BasePart | Várias partes do corpo do personagem anexadas ao HumanoidRootPart ou a partes vizinhas através de Motor6D ou objetos de restrição. Veja BodyParts para mais detalhes. |
| HumanoidRootPart | BasePart | Uma parte invisível especial que é considerada a raiz do rig; esta é também a PrimaryPart do Model do personagem. |
| Configuration | Configuration | Contém objetos de valor que ajustam vários comportamentos. Veja Configuration para mais detalhes. |
Notas de design
Ao usar o kit de NPC, tenha em mente as seguintes notas de design:
A aparência visual de um NPC pode ser personalizada adicionando/modificando vários objetos [BodyParts] e adicionando objetos Accessory.
Os Soldados, Zumbi Babando e Robôs NP-C 9000 usam Rthro como a base de seu rig. No entanto, os Robôs RO-01 usam uma base de Rthro modificada que adiciona partes de propulsão conectadas ao UpperTorso usando WeldConstraints. Usar juntas simples dessa forma permite incluir geometria extra para seus personagens sem mudar o rig base original.
Em um nível básico, animações de NPC podem ser personalizadas modificando o AnimationId dos objetos de Animação existentes dentro das poses do script Animate, ou aquelas dentro da pasta Animações. Tal mudança é essencialmente uma troca de ativo - para mudar os detalhes mais finos, você pode criar cópias personalizadas de animações existentes, e para tocar animações sob diferentes condições, você pode editar os scripts Animate ou NPC diretamente. Para mais informações, veja Animação.
Animate
O Script Animate no Model do NPC lida com configurações relacionadas à animação e contém os seguintes objetos:
| Nome do objeto ou [Tipo] | Tipo | Descrição |
|---|---|---|
| ScaleDampeningPercent | NumberValue | Define como as velocidades de animação são modificadas à medida que o personagem é escalado (menos que 1 implica que a reprodução da animação é escalada inversamente à medida que o personagem é escalado). |
| PlayEmote | BindableFunction | Isso pode ser invocado por outros scripts para forçar a suposição de uma pose. |
| [Pose] | StringValue | Referência a uma categoria de animação jogável, como idle, jump, walk, etc. Este objeto pode ser pai de qualquer número de Animações. Essas Animações possuem um Peso (NumberValue) que prioriza uma das várias animações a serem executadas enquanto a pose é assumida; tipicamente usado para adicionar variedade a poses idle e de dança. |
BodyParts
O BasePart BodyPart no Model do NPC representa as várias partes do corpo do personagem e contém os seguintes objetos:
| Nome do objeto ou [Tipo] | Tipo | Descrição |
|---|---|---|
| AvatarPartScaleType | StringValue | Define como a parte será escalada; os valores podem ser Classic, ProportionsNormal ou ProportionsSlender. |
| OriginalSize | Vector3Value | Define o tamanho da parte quando a escala do personagem é 1. |
| [Attachment] | Attachment | Define um ponto relativo à parte individual que scripts, efeitos e objetos como um Tool ou Accessory podem utilizar durante a posicionamento. |
| [Motor6D] | Motor6D | Uma junta animada entre duas partes do corpo. Note que Animator depende do nome de Motor6Ds para ser consistente com o que foi usado quando uma animação foi criada, então evite renomear este objeto. |
| [Joint] | WeldConstraint, Constraint, JointInstance | Uma junta não animada entre duas partes do corpo. |
| [Sound] | Sound | Comumente encontrado na cabeça ou HumanoidRootPart; reproduz sons dentro do rig conforme controlado pelo script RbxNpcSounds. |
Configuration
Cada NPC inclui um objeto Configuration dentro de sua hierarquia que atua como um contêiner de objetos de valor. Estes são usados pelo script NPC para ajustar vários comportamentos. A menos que especificado de outra forma, estes se aplicam a todos os personagens.
| Nome do objeto ou [Tipo] | Tipo | Descrição |
|---|---|---|
| DestroyOnDeath | BoolValue | Causa a destruição total do NPC logo após sua morte. Desabilite isso para que ragdolls sejam persistentes. |
| PatrolEnabled | BoolValue | Causa o NPC a vagar em uma área ao redor de sua posição inicial. |
| PatrolRadius | NumberValue | Define a distância máxima que um NPC irá vagar de sua posição inicial, assumindo que PatrolEnabled é verdadeiro. |
| RagdollEnabled | BoolValue | Causa o NPC a ficar mole quando morrer, em vez de se despedaçar. |
| AttackDamage | NumberValue | Define quanto de saúde é perdido por uma vítima quando atacada pelo NPC. Isso se aplica apenas aos kits de Zumbi e Soldado. |
| AttackDelay | NumberValue | Define o número mínimo de segundos entre os disparos. Isso se aplica apenas aos kits de Soldado. |
| AttackMode | NumberValue | Especifica o que o soldado irá atacar, com base no sistema de tagging. Isso se aplica apenas aos kits de Soldado. |
| AttackRadius | NumberValue | Define a distância máxima que o NPC deve ter de uma vítima potencial antes de tentar atacar. Isso se aplica apenas aos kits de Zumbi e Soldado. |
| ClipCapacity | NumberValue | Define quantas balas o soldado pode disparar antes de precisar recarregar. Isso se aplica apenas aos kits de Soldado. |
| ReloadDelay | NumberValue | Define quantos segundos devem passar antes que o carregador da arma do soldado seja recarregado. Isso se aplica apenas aos kits de Soldado. |
Atribuir tags
O script NPC usa tags do CollectionService para gerenciar a agressão em relação a outros personagens e jogadores. Várias tags da tabela a seguir podem ser atribuídas da seguinte forma:
Para atribuir uma tag a um personagem Player, você pode adicionar um Script a StarterCharacterScripts com uma chamada CollectionService:AddTag(). Por exemplo:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
| Tag | Propósito |
|---|---|
| SoldierEnemy ou SoldierFriend | Determina se um soldado, com base no valor de configuração AttackMode, deve atacar outro personagem. Quando o AttackMode do soldado está definido como 1, outros personagens devem ser marcados com SoldierEnemy para serem considerados atacáveis. Quando o AttackMode do soldado está definido como 2, todos os objetos sem a tag SoldierFriend são considerados atacáveis. Quando o AttackMode do soldado está definido como 3, essas tags são ignoradas e o soldado atacará todos os personagens. |
| ZombieFriend | Essa tag é usada pelo zumbi para determinar se ele não deve atacar um personagem. Quando aplicada, o zumbi se torna dócil em relação ao personagem marcado. |



