De meeste spellen laten spelers hun eigen Roblox-avatar gebruiken, hoewel sommige een aanpassingssysteem in het spel implementeren, zoals de UGC Homestore sjabloon. Andere spellen maken beperkte wijzigingen aan spelersavatars, zoals helmen, vleugels of accessoires die passen bij het genre.
Om een uniek spel te creëren dat het uiterlijk van je gebruikers verandert, kun je de standaard karaktereigenschappen aanpassen via avatarinstellingen of een handmatig aangepast uiterlijk.
Globale avatarinstellingen
De Bestand ⟩ Avatarinstellingen van Studio stelt je in staat om snel verschillende globale eigenschappen van spelerspersonages in je spel in te stellen. Deze instellingen zijn globaal van toepassing op alle spelersmodelen die je spel betreden. Om specifieke personages te wijzigen, zoals niet-speler personagemodellen, zie handmatig aangepast uiterlijk.
In dit venster kun je verschillende presets instellen voor kleding, accessoires, lichaamsdelen, botsingsgedrag, animaties en meer. Wanneer je deze instellingen bewerkt, wordt een voorbeeld van de toegepaste instellingen weergegeven in de werkruimte.
Voor meer informatie, zie Avatarinstellingen.
Handmatig aangepast uiterlijk
Karaktermodellen bevatten een Humanoid object dat het model speciale kenmerken geeft, zoals lopen, springen, items uitrusten en interactie met de omgeving.
Je kunt een Humanoid programmatisch aanpassen door HumanoidDescription bij te werken. Dit omvat spelersmodellen of niet-speler personagemodellen in je spel.
Je kunt de volgende karaktereigenschappen in je spel aanpassen met HumanoidDescription:
| Karaktereigenschap | Beschrijving |
|---|---|
| Schaal | Numerieke waarden voor fysieke eigenschappen hoogte, breedte, hoofd, lichaamstype en proportie. Dit heeft geen invloed op R6-lichaamstypes. |
| Accessoires | De asset-ID's van accessoires die door een karakter zijn uitgerust. |
| Classic Kleding | De asset-ID's van de Shirt, Pants en ShirtGraphic afbeeldings-texturen die je op het karakter kunt toepassen. |
| Lichaamsdeel | De asset-ID's van de Gezicht, Hoofd, Torso, RechterArm, LinkerArm, RechterBeen en LinkerBeen delen van een karakter. |
| Lichaamskleuren | De BodyColors van de individuele delen van het karakter. |
| Animaties | De asset-ID's van Animaties die je op een karakter kunt gebruiken. |
Pas een karakter aan met HumanoidDescription met de volgende stappen:
- Maak een beschrijving van het karakter van de gebruiker, een specifieke Outfit-ID of van een specifieke Gebruikers-ID.
- Wijzig de beschrijving om de eigenschappen aan te passen die je wilt toepassen op het Humanoid karakter.
- Pas de beschrijving toe op een enkel karakter, alle spelerspersonages of zelfs op alle spawende personages.
Maak HumanoidDescription
Je kunt een nieuwe HumanoidDescription instantie direct binnen de Explorer hiërarchie of binnen een Script maken met de volgende code:
local humanoidDescription = Instance.new("HumanoidDescription")In de meeste gevallen moet je een bestaande HumanoidDescription gebruiken in plaats van een standaard nieuwe HumanoidDescription door te verwijzen naar een bestaand spelerskarakter, avataroutfit of gebruikers-ID.
Van het spelerskarakter
Gebruik het volgende codevoorbeeld om een nieuwe HumanoidDescription te maken op basis van de huidige eigenschappen van het spelerskarakter:
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
local humanoidDescription = Instance.new("HumanoidDescription")
if humanoid then
humanoidDescription = humanoid:GetAppliedDescription()
endVan een bestaande outfit
Gebruik de volgende voorbeeldcode om een HumanoidDescription te maken van een outfit-ID met Players.GetHumanoidDescriptionFromOutfitID:
local Players = game:GetService("Players")
local outfitId = 480059254
local humanoidDescriptionFromOutfit = Players:GetHumanoidDescriptionFromOutfitId(outfitId)Van een specifieke gebruiker
Gebruik de volgende voorbeeldcode om een HumanoidDescription te maken van een gebruikers-ID met Players:GetHumanoidDescriptionFromUserId():
local Players = game:GetService("Players")
local userId = 491243243
local humanoidDescriptionFromUser = Players:GetHumanoidDescriptionFromUserId(userId)Wijzig HumanoidDescription
Om HumanoidDescription eigenschappen aan te passen, stel je ze direct in op de HumanoidDescription of gebruik je een specifieke methode voordat je de HumanoidDescription op een karakter toepast.
Het volgende codevoorbeeld geeft voorbeelden van het instellen van de verschillende soorten HumanoidDescription eigenschappen:
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)Stel meerdere accessoires in
Voor gelaagde of bulkaccessoirewijzigingen kun je HumanoidDescription:SetAccessories() gebruiken om accessoires gerelateerde updates te maken. Het volgende codevoorbeeld voegt een gelaagde trui en jas in die volgorde toe aan een 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)Pas HumanoidDescription toe
Pas HumanoidDescription toe op specifieke Humanoid personages in je spel met Humanoid:ApplyDescription() of Humanoid.LoadCharacterWithHumanoidDescription.
Op een enkel karakter
ApplyDescription() kan elk Humanoid targeten. Gebruik de volgende code om een nieuw paar zonnebrillen en een nieuwe torso aan het spelerskarakter toe te voegen:
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
local descriptionClone = humanoid:GetAppliedDescription()
descriptionClone.Torso = 86500008
-- Meerdere gezichtaccessoire-assets zijn toegestaan in een door komma's gescheiden string
descriptionClone.FaceAccessory = descriptionClone.FaceAccessory .. ",2535420239"
-- Pas de gewijzigde "descriptionClone" toe op humanoid
humanoid:ApplyDescription(descriptionClone)
endOp alle spelerspersonages
Gebruik de volgende voorbeeldcode om een HumanoidDescription toe te passen op alle huidige spelers in het spel:
local Players = game:GetService("Players")
for _, player in Players:GetPlayers() do
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Maak een 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
endOp alle spawende personages
Gebruik de volgende voorbeeldcode om een specifieke HumanoidDescription in te stellen voor alle spawende spelerspersonages:
local Players = game:GetService("Players")
-- Stop automatische spawning zodat het kan worden gedaan in de "PlayerAdded" callback
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Maak een 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)
-- Spawn karakter met de HumanoidDescription
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
-- Verbind de "PlayerAdded" gebeurtenis met de "onPlayerAdded()" functie
Players.PlayerAdded:Connect(onPlayerAdded)Als de HumanoidDescription instantie in de Explorer is gemaakt en aan de werkruimte is gekoppeld, gebruik dan de volgende voorbeeldcode in een Script om toegang te krijgen tot de werkruimte-instantie:
local Players = game:GetService("Players")
-- Stop automatische spawning zodat het kan worden gedaan in de "PlayerAdded" callback
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Spawn karakter met "workspace.StudioHumanoidDescription"
player:LoadCharacterWithHumanoidDescription(workspace.StudioHumanoidDescription)
end
-- Verbind de "PlayerAdded" gebeurtenis met de "onPlayerAdded()" functie
Players.PlayerAdded:Connect(onPlayerAdded)Gelaagde accessoires op niet-R15
Gecage accessoires, zoals gelaagde accessoires, gebruiken WrapTarget en WrapLayer om uit te rekken en over een doel Model te wikkelen. Gelaagde accessoires kunnen werken met zowel standaard spelerspersonages als niet-R15 modellen.
Aangepaste implementatie van gelaagde accessoires, zoals een model dat een unieke cage UV-kaart gebruikt, kan niet worden geüpload en gepubliceerd naar de Marketplace. Je kunt echter aangepaste cage-meshes maken voor in-game assets zoals gebouwen, spel-specifieke kleding en props.
Of je nu gelaagde accessoires implementeert op een R15 rigging armature, of een aangepaste rig gebruikt, zorg ervoor dat je accessoires en lichamen de volgende bevatten:
- Het doelmodel, meestal het lichaam, heeft een WrapTarget component op de meshes waarover aanvullende modellen bedoeld zijn om te wikkelen.
- Het layeringmodel, meestal de kleding of accessoire, heeft een WrapLayer component op de meshes die bedoeld zijn om het doelmodel te wikkelen.
- De buitenste cage van het doelmodel, en de binnenste en buitenste cage van het layeringmodel hebben overeenkomende UV-kaarten.
- De overeenkomstige vertices op de doelcage moeten dezelfde UV's hebben als die vertices op de layer cage.
- Als je doelmodel geen R15 is, of geen Humanoid bevat, moet je een Weld object aan de layering MeshPart toevoegen.
- De Weld moet Part0 en Part1 hebben ingesteld om de layering MeshPart te koppelen aan de Part-hiërarchie van het Model. Bijvoorbeeld, Part0 verwijst naar de accessoire en Part1 verwijst naar de bovenliggende Part.
- Als je doelmodel zowel R15 is als een Humanoid bevat, wordt deze las automatisch gemaakt.