Los NPCs (personajes no jugadores) pueden agregar mucha profundidad a una experiencia. Todos los siguientes NPCs pueden ser visualmente personalizados, su comportamiento modificado, y los zombis/soldados incluso pueden defender un área atacando a jugadores u otros personajes utilizando un sistema de etiquetas para establecer el comportamiento.
Para usar un NPC en tu juego:
En la página del elemento del NPC, haz clic en el botón verde Obtener y confirma la transacción.
En Studio, abre la Caja de herramientas.
Selecciona la sección de Inventario de tu caja de herramientas.

Localiza el NPC y haz clic en él para agregarlo al lugar.
Estructura del personaje
Cada modelo de NPC típicamente contiene los siguientes objetos:
| Nombre del objeto o [Tipo] | Tipo | Descripción |
|---|---|---|
| Animaciones | Folder | Contiene Animaciones, como una AnimaciónDeAtaque o AnimaciónDeMuerte. |
| Poses Iniciales | Folder | Contiene información de posado. |
| Animate | Script | Carga y reproduce animaciones en el esqueleto del personaje. Consulta Animate para más detalles. |
| [Accesorio] | Accessory | Uno de los posibles múltiples Accesorios para el NPC, como sombreros, armas, etc. |
| Salud | Script | Regenera típicamente la salud de Humanoid con el tiempo. Desactivar esto evitará que el personaje regenere salud. |
| Humanoide | Humanoid | Maneja propiedades relacionadas con Humanoid, como Humanoid.Health, Humanoid.WalkSpeed, Humanoid.DisplayDistanceType, etc. |
| NPC | Script | Define comportamientos específicos del personaje, como deambular, atacar, etc. Parentea los siguientes objetos: Maid (ModuleScript) define una clase útil para liberar recursos utilizados. Ragdoll (ModuleScript) define una función que transforma un personaje en un cuerpo suelto afectado por la física (parentea un RigTypes ModuleScript que define varias funciones auxiliares). |
| RbxNpcSounds | Script | Define y gestiona el comportamiento relacionado con los efectos de sonido del personaje, como correr, morir, etc. |
| Cuerpos | BasePart | Varios partes del cuerpo del personaje unidas al HumanoidRootPart o partes del cuerpo vecinas a través de Motor6D o objetos de restricción. Consulta Cuerpos para más detalles. |
| HumanoidRootPart | BasePart | Una parte especial invisible que se considera la raíz del esqueleto; esta es también la PrimaryPart del Model del personaje. |
| Configuración | Configuration | Contiene objetos de valor que ajustan varios comportamientos. Consulta Configuración para más detalles. |
Notas de diseño
Al utilizar el kit de NPC, ten en cuenta las siguientes notas de diseño:
La apariencia visual de un NPC puede ser personalizada añadiendo/modificando varios objetos de [Cuerpos] y añadiendo objetos de Accessory.
Los Soldados, Zombi Baboso, y Robots NP-C 9000 utilizan Rthro como base de su esqueleto. Sin embargo, los Robots RO-01 utilizan una base Rthro modificada que agrega partes de propulsión conectadas al UpperTorso mediante WeldConstraints. Utilizar juntas simples de esta manera te permite incluir geometría adicional para tus personajes sin cambiar el esqueleto base original.
A nivel básico, las animaciones de los NPC pueden ser personalizadas modificando el AnimationId de los objetos de animación existentes dentro de las poses del script Animate, o aquellos dentro de la carpeta Animaciones. Tal cambio es esencialmente un intercambio de activos; para cambiar los detalles más finos, puedes crear copias personalizadas de animaciones existentes, y para reproducir animaciones bajo diferentes condiciones, puedes editar los scripts Animate o NPC directamente. Para más información, consulta Animación.
Animate
El script Script Animate en el Model del NPC maneja configuraciones relacionadas con animaciones y contiene los siguientes objetos:
| Nombre del objeto o [Tipo] | Tipo | Descripción |
|---|---|---|
| ScaleDampeningPercent | NumberValue | Define cómo se modifican las velocidades de animación a medida que el personaje se escala (menos de 1 implica que la reproducción de la animación se escala inversamente a medida que se escala un personaje). |
| PlayEmote | BindableFunction | Esto puede ser invocado por otros scripts para forzar la asunción de una pose. |
| [Pose] | StringValue | Referencia a una categoría de animación reproducible, como estar de pie, saltar, caminar, etc. Este objeto puede parentar cualquier número de Animaciones. Estas Animaciones parentan un Peso (NumberValue) que prioriza una de múltiples animaciones para reproducir mientras se asume la pose; típicamente utilizado para añadir variedad a las poses de estar de pie y bailar. |
Cuerpos
La parte del cuerpo BasePart en el Model del NPC representa las diversas partes del cuerpo del personaje y contiene los siguientes objetos:
| Nombre del objeto o [Tipo] | Tipo | Descripción |
|---|---|---|
| AvatarPartScaleType | StringValue | Determina cómo se escalará la parte; los valores pueden ser Clásico, ProporcionesNormales, o ProporcionesDelgadas. |
| OriginalSize | Vector3Value | Determina el tamaño de la parte cuando la escala del personaje es 1. |
| [Attachment] | Attachment | Define un punto relativo a la parte individual que scripts, efectos, y objetos como un Tool o Accessory pueden utilizar durante la posicionamiento. |
| [Motor6D] | Motor6D | Una junta animada entre dos partes del cuerpo. Ten en cuenta que Animator depende del nombre de Motor6Ds para ser consistente con el de Motor6Ds utilizado cuando se creó una animación, así que evita renombrar este objeto. |
| [Joint] | WeldConstraint, Constraint, JointInstance | Una junta no animada entre dos partes del cuerpo. |
| [Sound] | Sound | Comúnmente encontrado en la cabeza o HumanoidRootPart; reproduce sonidos desde dentro del modelo, como lo controla el script RbxNpcSounds. |
Configuración
Cada NPC incluye un objeto Configuration dentro de su jerarquía que actúa como un contenedor de objetos de valor. Estos son utilizados por el script NPC para ajustar varios comportamientos. A menos que se especifique lo contrario, estos se aplican a todos los personajes.
| Nombre del objeto o [Tipo] | Tipo | Descripción |
|---|---|---|
| DestroyOnDeath | BoolValue | Hace que todo el NPC sea destruido poco después de morir. Desactiva esto para que los ragdolls sean persistentes. |
| PatrolEnabled | BoolValue | Hace que el NPC deambula en un área alrededor de su posición inicial. |
| PatrolRadius | NumberValue | Define la distancia máxima que un NPC puede deambular de su posición inicial, asumiendo que PatrolEnabled es verdadero. |
| RagdollEnabled | BoolValue | Hace que el NPC se relaje cuando muere, en lugar de desmoronarse. |
| AttackDamage | NumberValue | Define cuánto salud pierde una víctima cuando es atacada por el NPC. Esto se aplica solo a kits de Zombi y Soldado. |
| AttackDelay | NumberValue | Define el número mínimo de segundos entre disparos. Esto se aplica solo a kits de Soldado. |
| AttackMode | NumberValue | Especifica qué atacará el soldado, basado en el sistema de etiquetado. Esto se aplica solo a kits de Soldado. |
| AttackRadius | NumberValue | Define la distancia máxima que el NPC debe estar de una potencial víctima antes de intentar atacar. Esto se aplica solo a kits de Zombi y Soldado. |
| ClipCapacity | NumberValue | Define cuántas balas puede disparar el soldado antes de necesitar recargar. Esto se aplica solo a kits de Soldado. |
| ReloadDelay | NumberValue | Define cuántos segundos deben pasar antes de que se recargue el clip del arma del soldado. Esto se aplica solo a kits de Soldado. |
Asignar etiquetas
El script NPC utiliza etiquetas de CollectionService para gestionar la agresión hacia otros personajes y jugadores. Varias etiquetas de la siguiente tabla pueden ser asignadas de la siguiente manera:
Para asignar una etiqueta a un personaje de Player, puedes agregar un Script a StarterCharacterScripts con una llamada a CollectionService:AddTag(). Por ejemplo:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
| Etiqueta | Propósito |
|---|---|
| SoldierEnemy o SoldierFriend | Determina si un soldado, según su valor de configuración AttackMode, debería atacar a otro personaje. Cuando el AttackMode del soldado está configurado a 1, otros personajes deben estar etiquetados con SoldierEnemy para ser considerados atacables. Cuando el AttackMode del soldado está configurado a 2, todos los objetos sin la etiqueta SoldierFriend son considerados atacables. Cuando el AttackMode del soldado está configurado a 3, estas etiquetas se ignoran por completo y el soldado atacará a todos los personajes. |
| ZombieFriend | Esta etiqueta es utilizada por el zombi para determinar si no debería atacar a un personaje. Cuando se aplica, el zombi se vuelve dócil hacia el personaje etiquetado. |



