Los NPCs (personajes no jugadores) pueden añadir mucha profundidad a una experiencia.Todos los siguientes NPCs se pueden personalizar visualmente, su comportamiento se modifica , y los zombis/soldados incluso pueden defender una área atacando a los jugadores o a otros personajes usando un sistema de etiquetas para establecer el comportamiento.
Para usar un NPC en tu juego:
En la página de elementos del PNJ, haz clic en el botón verde Obtener y confirma la transacción.
En Roblox Studio, abra la Caja de herramientas ( Ver → Caja de herramientas ).
Seleccione la sección de su caja de herramientas Inventario .
Localiza al NPC y haz clic en él para agregarlo al lugar.
Estructura de caracteres
Cada modelo de NPC contiene típicamente los siguientes objetos:
Nombre del objeto o [Tipo] | Tipo | Descripción |
---|---|---|
Animaciones | Folder | Contiene Animations , como un AttackAnimation o DeathAnimation . |
Poses iniciales | Folder | Contiene información de posado. |
Animar | Script | Carga y reproduce animaciones en el rigde personaje. Vea Animar para más detalles. |
[Accesoria] | Accessory | Una de posiblemente múltiples Accessories para el NPC como sombreros, armas, etc. |
Salud | Script | Regenera típicamente la salud Humanoid a lo largo del tiempo. Desactivar esto impedirá que el personaje regenere la salud. |
Humanoide | Humanoid | Administrar propiedades relacionadas Humanoid relacionadas, como Humanoid.Health , Humanoid.WalkSpeed , Humanoid.DisplayDistanceType , etc. |
NPC | Script | Define comportamientos específicos de personajes como rastreo, ataque, etc.Padres de los siguientes objetos: Sirviente ( ModuleScript ) define una clase útil para liberar recursos utilizados.: Ragdoll ( ModuleScript ) define una función que transforma a un personaje en un cuerpo suelto afectado por la física (padres de un RigTypes ModuleScript que define varias funciones auxiliares). |
Sonidos de RbxNpc | Script | Define y gestiona el comportamiento relacionado con los efectos de sonido de personajes como correr, morir, etc. |
Partes del cuerpo | BasePart | Varias partes del cuerpo de personajes unidas a la parte raíz humana o a las partes del cuerpo vecinas a través de Motor6D o objetos de restricción.Vea Partes del cuerpo para más detalles. |
Parte de raíz humanoide | BasePart | Una parte invisible especial que se considera la raíz del rig; este es también el PrimaryPart de la Model del personaje. |
Configuración | Configuration | Contiene objetos de valor que ajustan varios comportamientos. Vea Configuración para más detalles. |
Notas de diseño
Al usar el kit NPC, tenga en cuenta las siguientes notas de diseño:
La apariencia visual de un NPC se puede personalizar agregando/modificando varios objetos [BodyParts] y agregando objetos Accessory.
Los soldados, zombis babosos y los robots NP-C 9000 usan Rthro como base de su rig.Sin embargo, los robots RO-01 utilizan una base modificada de Rthro que agrega piezas propulsoras conectadas al Torso superior usando WeldConstraints .El uso de uniones simples de esta manera te permite incluir geometría adicional para tus personajes sin cambiar el modelo base original.
A nivel básico, las animaciones de NPC se pueden personalizar modificando el AnimationId de los objetos de animación existentes dentro de las posiciones de guión Animar , o aquellas dentro de la carpeta Animaciones .Un cambio como ese es esencialmente un intercambio de activos - para cambiar los detalles más finos, puedes crear copias personalizadas de animaciones existentes, y para jugar animaciones bajo diferentes condiciones, puedes editar los Animate o NPC scripts directamente.Para obtener más información, vea Animación.
Animar
El Animate en el NPC maneja las configuraciones relacionadas con la animación y contiene los siguientes objetos:
Nombre del objeto o [Tipo] | Tipo | Descripción |
---|---|---|
Porcentaje de amortiguación de escala | 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 animación se invierte inversamente a medida que se escala un personaje). |
Reproducir emote | BindableFunction | Esto se puede invocar por otros scripts para forzar la asunción de una postura. |
[Pose] | StringValue | Referencia a una categoría de animación reproducible como inactividad, salto, caminata, etc.Este objeto puede padre de cualquier número de Animations . Estos Animations padres de peso ( NumberValue ) que priorizan una de múltiples animaciones para jugar mientras se asume la postura; generalmente se usa para agregar variedad a las poses inactivas y de baile. |
Partes del cuerpo
La parte del cuerpo BasePart en el NPC Model representa las diversas partes del cuerpo de personajes y contiene los siguientes objetos:
Nombre del objeto o [Tipo] | Tipo | Descripción |
---|---|---|
Tipo de escala de avatar | StringValue | Determina cómo se escalará la parte; los valores pueden ser Clásico , Proporciones normales o Proporciones delgadas . |
Tamaño original | Vector3Value | Determina el tamaño de la parte cuando la escala de caracteres es 1. |
[Adjunto] | Attachment | Define un punto relativo a la parte individual que los scripts, efectos y objetos como un Tool o Accessory pueden utilizar durante la posicionación. |
[Motor6D] | Motor6D | Una articulación animada entre dos partes del cuerpo.Tenga en cuenta que Animator depende del nombre de Motor6Ds para ser consistente con el de Motor6Ds utilizado cuando se creó una animación, por lo que evite renombrar este objeto. |
[Común] | WeldConstraint , Constraint , JointInstance | Una junta no animada entre dos partes del cuerpo. |
[Sonido] | Sound | Comúnmente encontrado en la cabeza o HumanoidRootPart ; reproduce sonidos desde dentro del rig como controlados por el RbxNpcSounds script. |
Configuración
Cada NPC incluye un objeto Configuration dentro de su jerarquía que actúa como contenedor de objetos de valor.Estos son utilizados por el script del NPC para ajustar varios comportamientos.A menos que se indique lo contrario, estas se aplican a todos los personajes.
Nombre del objeto o [Tipo] | Tipo | Descripción |
---|---|---|
Destruir al morir | BoolValue | Hace que todo el NPC se destruya poco después de morir. Desactiva esto para que las ragdolls sean persistentes. |
PatrullaActivada | BoolValue | Hace que el NPC se desplace en un área alrededor de su posición de inicio. |
Radio de patrulla | NumberValue | Define la distancia máxima que un NPC recorrerá desde su posición de inicio, asumiendo que PatrullaActivada es verdadero. |
RagdollActivado | BoolValue | Hace que el NPC se vaya a la zaga cuando muera, en lugar de romperse. |
Daño de ataque | NumberValue | Define cuánta salud se pierde por una víctima cuando es atacada por el PNJ. Esto se aplica solo a los kits de Zombie y Soldado. |
Retraso de ataque | NumberValue | Define el número mínimo de segundos entre disparos. Esto se aplica solo a los kits de Soldado. |
Modo de ataque | NumberValue | Especifica qué atacará el soldado, basado en el sistema de etiquetado . Esto se aplica solo a los kits de soldado. |
Radio de ataque | NumberValue | Define la distancia máxima que el NPC debe estar de una víctima potencial antes de que intente atacar. Esto se aplica solo a los kits de Zombie y Soldado. |
Capacidad de clip | NumberValue | Define cuántas balas puede disparar el soldado antes de necesitar recargar. Esto se aplica solo a los kits de soldado. |
Retraso de recarga | NumberValue | Define cuántos segundos deben pasar antes de que se recargue el clip de armas del soldado. Esto se aplica solo a los kits de soldados. |
Asignar etiquetas
El script NPC usa etiquetas CollectionService para gestionar la agresión hacia otros personajes y jugadores.Se pueden asignar varias etiquetas de la siguiente tabla de la siguiente manera:
Para asignar etiquetas a otro PNJ, asignárselas al nivel superior del PNJModel usando la sección Etiquetas de sus propiedades o el Editor de etiquetas de Studio.
Para asignar una etiqueta a un personaje Player caracter, puedes agregar un Script a StarterCharacterScripts con una llamada CollectionService:AddTag(). Por ejemplo:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
Etiqueta | Propósito |
---|---|
SoldadoEnemigo o SoldadoAmigo | Determina si un soldado, basado en su valor de configuración de modo de ataque , debe atacar a otro personaje.Cuando el modo de ataque del soldado se establece en AttackMode , otros personajes deben ser etiquetados con SoldierEnemy para ser considerados atacables.Cuando el modo de ataque del soldado se establece en AttackMode , todos los objetos sin la etiqueta SoldierFriend se consideran atacables.Cuando el modo de ataque del soldado está configurado en , estas etiquetas se ignoran por completo y el soldado atacará a todos los personajes. |
Amigo zombi | Esta etiqueta es utilizada por el zombi para determinar si no debe atacar a un personaje.Al aplicarse, el zombi se vuelve dócil hacia el personaje etiquetado. |