La mayoría de los juegos permiten a los jugadores usar su propio avatar de Roblox, aunque algunos implementan un sistema de personalización en el juego como la plantilla de UGC Homestore. Otros juegos realizan modificaciones limitadas a los avatares de los jugadores, como cascos, alas o accesorios que coinciden con el género.
Para crear un juego único que altere la apariencia de tus usuarios, puedes personalizar las propiedades del personaje predeterminado a través de configuraciones de avatar o modificar manualmente la apariencia.
Configuraciones globales de avatar
La opción Archivo ⟩ Configuraciones de Avatar de Studio te permite establecer rápidamente varias propiedades globales del personaje del jugador en tu juego. Estas configuraciones se aplican globalmente a todos los modelos de personajes de los jugadores que se unan a tu juego. Para modificar personajes específicos, como modelos de personajes no jugadores, consulta modificar manualmente la apariencia.
En esta ventana, puedes establecer varios preajustes para ropa, accesorios, partes del cuerpo, comportamiento de colisión, animaciones y más. Al editar estas configuraciones, se muestra una vista previa de las configuraciones aplicadas en el espacio de trabajo.
Para más información, consulta Configuraciones de Avatar.
Modificar manualmente la apariencia
Los modelos de personajes contienen un objeto Humanoid que le da al modelo características especiales, como caminar, saltar, equipar objetos e interactuar con el entorno.
Puedes modificar programáticamente un Humanoid actualizando HumanoidDescription. Esto incluye modelos de personajes de jugadores o modelos de personajes no jugadores en tu juego.
Puedes ajustar las siguientes propiedades del personaje en tu juego utilizando HumanoidDescription:
| Propiedad del personaje | Descripción |
|---|---|
| Escala | Valores numéricos para rasgos físicos altura, ancho, cabeza, tipo de cuerpo y proporción. Esto no afecta a los tipos de cuerpo R6. |
| Accesorios | Los IDs de los activos de accesorios equipados por un personaje. |
| Ropa Clásica | Los IDs de los activos de Shirt, Pants y las texturas de imagen de ShirtGraphic que puedes aplicar al personaje. |
| Parte del Cuerpo | Los IDs de los activos de Cara, Cabeza, Torso, Brazo Derecho, Brazo Izquierdo, Pierna Derecha y Pierna Izquierda de un personaje. |
| Colores del Cuerpo | Los BodyColors de las partes individuales del personaje. |
| Animaciones | Los IDs de Animaciones que puedes usar en un personaje. |
Personaliza un personaje con HumanoidDescription utilizando los siguientes pasos:
- Crea una descripción a partir del personaje del usuario, un ID de atuendo específico o de un ID de usuario específico.
- Modifica la descripción para personalizar las propiedades que deseas aplicar al personaje Humanoid.
- Aplica la descripción a un solo personaje, a todos los personajes jugadores o incluso a todos los personajes que aparezcan.
Crear HumanoidDescription
Puedes crear una nueva instancia de HumanoidDescription directamente dentro de la jerarquía de Explorer o dentro de un Script con el siguiente código:
local humanoidDescription = Instance.new("HumanoidDescription")En la mayoría de los casos, deberías usar una HumanoidDescription existente en lugar de una nueva HumanoidDescription predeterminada haciendo referencia a un personaje jugador existente, atuendo de avatar o ID de usuario.
Desde el personaje del jugador
Utiliza el siguiente ejemplo de código para crear una nueva HumanoidDescription basada en las propiedades actuales del personaje del jugador:
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
local humanoidDescription = Instance.new("HumanoidDescription")
if humanoid then
humanoidDescription = humanoid:GetAppliedDescription()
endDesde un atuendo existente
Utiliza el siguiente código de ejemplo para crear una HumanoidDescription a partir de un ID de atuendo utilizando Players.GetHumanoidDescriptionFromOutfitID:
local Players = game:GetService("Players")
local outfitId = 480059254
local humanoidDescriptionFromOutfit = Players:GetHumanoidDescriptionFromOutfitId(outfitId)Desde un usuario específico
Utiliza el siguiente código de ejemplo para crear una HumanoidDescription a partir de un ID de usuario utilizando Players:GetHumanoidDescriptionFromUserId():
local Players = game:GetService("Players")
local userId = 491243243
local humanoidDescriptionFromUser = Players:GetHumanoidDescriptionFromUserId(userId)Modificar HumanoidDescription
Para personalizar las propiedades de HumanoidDescription, configúralas directamente en el HumanoidDescription o utiliza un método especificado antes de aplicar el HumanoidDescription a un personaje.
El siguiente ejemplo de código proporciona ejemplos de cómo establecer los diferentes tipos de propiedades de HumanoidDescription:
local humanoidDescription = Instance.new("HumanoidDescription")
humanoidDescription.HatAccessory = "2551510151,2535600138"
humanoidDescription.BodyTypeScale = 0.1
humanoidDescription.ClimbAnimation = 619521311
humanoidDescription.Face = 86487700
humanoidDescription.GraphicTShirt = 1711661
humanoidDescription.HeadColor = Color3.new(0, 1, 0)Establecer múltiples accesorios
Para cambios de accesorios en capas o en bloque, puedes usar HumanoidDescription:SetAccessories() para realizar actualizaciones relacionadas con accesorios. El siguiente ejemplo de código agrega un suéter en capas y una chaqueta en ese orden a un HumanoidDescription:
local humanoidDescription = Instance.new("HumanoidDescription")
local accessoryTable = {
{
Order = 1,
AssetId = 6984769289,
AccessoryType = Enum.AccessoryType.Sweater
},
{
Order = 2,
AssetId = 6984767443,
AccessoryType = Enum.AccessoryType.Jacket
}
}
humanoidDescription:SetAccessories(accessoryTable, false)Aplicar HumanoidDescription
Aplica HumanoidDescription a personajes específicos de Humanoid en tu juego con Humanoid:ApplyDescription() o Humanoid.LoadCharacterWithHumanoidDescription.
A un solo personaje
ApplyDescription() puede dirigirse a cualquier Humanoid. Usa el siguiente código para agregar un nuevo par de gafas de sol y un nuevo torso al personaje del jugador:
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
local descriptionClone = humanoid:GetAppliedDescription()
descriptionClone.Torso = 86500008
-- Se permiten múltiples activos de accesorios faciales en una cadena separada por comas
descriptionClone.FaceAccessory = descriptionClone.FaceAccessory .. ",2535420239"
-- Aplicar "descriptionClone" modificado al humanoide
humanoid:ApplyDescription(descriptionClone)
endA todos los personajes jugadores
Utiliza el siguiente código de ejemplo para aplicar un HumanoidDescription a todos los jugadores actuales en el juego:
local Players = game:GetService("Players")
for _, player in Players:GetPlayers() do
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Crear una HumanoidDescription
local humanoidDescription = Instance.new("HumanoidDescription")
humanoidDescription.HatAccessory = "2551510151,2535600138"
humanoidDescription.BodyTypeScale = 0.1
humanoidDescription.ClimbAnimation = 619521311
humanoidDescription.Face = 86487700
humanoidDescription.GraphicTShirt = 1711661
humanoidDescription.HeadColor = Color3.new(0, 1, 0)
humanoid:ApplyDescription(humanoidDescription)
end
endA todos los personajes que aparecen
Utiliza el siguiente código de ejemplo para establecer un HumanoidDescription específico para todos los personajes jugadores que aparecen:
local Players = game:GetService("Players")
-- Detener el aparecimiento automático para que se pueda hacer en la devolución de llamada "PlayerAdded"
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Crear una HumanoidDescription
local humanoidDescription = Instance.new("HumanoidDescription")
humanoidDescription.HatAccessory = "2551510151,2535600138"
humanoidDescription.BodyTypeScale = 0.1
humanoidDescription.ClimbAnimation = 619521311
humanoidDescription.Face = 86487700
humanoidDescription.GraphicTShirt = 1711661
humanoidDescription.HeadColor = Color3.new(0, 1, 0)
-- Aparecer personaje con la HumanoidDescription
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
-- Conectar el evento "PlayerAdded" a la función "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)Si la instancia de HumanoidDescription fue creada en el Explorer y se parentó al espacio de trabajo, utiliza el siguiente código de ejemplo en un Script para acceder a la instancia del espacio de trabajo:
local Players = game:GetService("Players")
-- Detener el aparecimiento automático para que se pueda hacer en la devolución de llamada "PlayerAdded"
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Aparecer personaje con "workspace.StudioHumanoidDescription"
player:LoadCharacterWithHumanoidDescription(workspace.StudioHumanoidDescription)
end
-- Conectar el evento "PlayerAdded" a la función "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)Accesorios en capas en no-R15
Los accesorios enjaulados, como los accesorios en capas, utilizan WrapTarget y WrapLayer para estirarse y envolverse sobre un Model objetivo. Los accesorios en capas pueden funcionar tanto con personajes estándar de R15 de Roblox como con modelos no-R15.
La implementación personalizada de accesorios en capas, como un modelo que utiliza un mapa UV de jaula único, no puede ser cargada y publicada en el Mercado. Para más información, consulta Especificaciones de accesorios en capas.
Ya sea que estés implementando accesorios en capas en un rig de avatar R15, o utilizando un rig personalizado, asegúrate de que tus accesorios y cuerpos incluyan lo siguiente:
- El modelo objetivo, típicamente el cuerpo, tiene un componente WrapTarget en las mallas que se pretende que otros modelos envuelvan.
- El modelo de capas, típicamente la ropa o el accesorio, tiene un componente WrapLayer en las mallas destinadas a envolver el modelo objetivo.
- La jaula exterior del modelo objetivo, y la jaula interior y exterior del modelo de capas tienen mapas UV coincidentes.
- Los vértices correspondientes en la jaula objetivo deben tener los mismos UV que esos vértices en la jaula de capas.
- Si tu modelo objetivo no es R15, o no incluye un Humanoid, debes agregar un objeto Weld a la MeshPart de capas.
- El Weld debe tener Part0 y Part1 configurados para vincular la MeshPart de capas a la jerarquía de Part del Modelo. Por ejemplo, Part0 se refiere al accesorio y Part1 se refiere a la Parte padre.
- Si tu modelo objetivo es tanto R15 como incluye un Humanoid, este weld se crea automáticamente.