Die meisten Spiele erlauben es den Spielern, ihren eigenen Roblox-Avatar zu verwenden, obwohl einige ein Anpassungssystem im Spiel implementieren, wie die UGC Homestore Vorlage. Andere Spiele nehmen begrenzte Änderungen an den Spieleravatare vor, wie Helme, Flügel oder Accessoires, die zum Genre passen.
Um ein einzigartiges Spiel zu erstellen, das das Aussehen Ihrer Benutzer verändert, können Sie die Standard-Charaktereigenschaften über Avatar-Einstellungen oder eine manuelle Anpassung des Aussehens anpassen.
Globale Avatar-Einstellungen
Die Datei ⟩ Avatar-Einstellungen im Studio ermöglicht es Ihnen, schnell mehrere globale Eigenschaften des Spielercharakters in Ihrem Spiel festzulegen. Diese Einstellungen gelten global für alle Spielercharaktermodelle, die Ihrem Spiel beitreten. Um spezifische Charaktere zu ändern, wie z. B. Nicht-Spieler-Charaktermodelle, siehe manuelle Anpassung des Aussehens.
In diesem Fenster können Sie verschiedene Voreinstellungen für Kleidung, Accessoires, Körperteile, Kollisionsverhalten, Animationen und mehr festlegen. Wenn Sie diese Einstellungen bearbeiten, wird eine Vorschau der angewendeten Einstellungen im Arbeitsbereich angezeigt.
Für weitere Informationen siehe Avatar-Einstellungen.
Manuelle Anpassung des Aussehens
Charaktermodelle enthalten ein Humanoid-Objekt, das dem Modell besondere Eigenschaften verleiht, wie Gehen, Springen, Ausrüsten von Gegenständen und Interagieren mit der Umgebung.
Sie können ein Humanoid programmgesteuert ändern, indem Sie HumanoidDescription aktualisieren. Dies umfasst Spielercharaktermodelle oder Nicht-Spieler-Charaktermodelle in Ihrem Spiel.
Sie können die folgenden Charaktereigenschaften in Ihrem Spiel mit HumanoidDescription anpassen:
| Charaktereigenschaft | Beschreibung |
|---|---|
| Skalierung | Zahlenwerte für physische Merkmale height, width, head, body type und proportion. Dies hat keinen Einfluss auf R6-Körpertypen. |
| Accessoires | Die Asset-IDs von accessories, die von einem Charakter ausgestattet sind. |
| Klassische Kleidung | Die Asset-IDs der Shirt, Pants und ShirtGraphic Bildtexturen, die Sie auf den Charakter anwenden können. |
| Körperteil | Die Asset-IDs der Face, Head, Torso, RightArm, LeftArm, RightLeg und LeftLeg Teile eines Charakters. |
| Körperfarben | Die BodyColors der einzelnen Teile des Charakters. |
| Animationen | Die Asset-IDs von Animations, die Sie auf einem Charakter verwenden können. |
Passen Sie einen Charakter mit HumanoidDescription mit den folgenden Schritten an:
- Erstellen Sie eine Beschreibung aus dem Charakter des Benutzers, einer bestimmten Outfit-ID oder einer bestimmten Benutzer-ID.
- Ändern Sie die Beschreibung, um die Eigenschaften anzupassen, die Sie auf das Humanoid-Charakter anwenden möchten.
- Wenden Sie die Beschreibung an auf entweder einen einzelnen Charakter, alle Spielercharaktere oder sogar auf alle erscheinenden Charaktere.
Erstellen von HumanoidDescription
Sie können eine neue HumanoidDescription-Instanz direkt innerhalb der Explorer-Hierarchie oder innerhalb eines Script mit dem folgenden Code erstellen:
local humanoidDescription = Instance.new("HumanoidDescription")In den meisten Fällen sollten Sie eine vorhandene HumanoidDescription verwenden, anstatt eine standardmäßige neue HumanoidDescription, indem Sie auf einen vorhandenen Spielercharakter, ein Avatar-Outfit oder eine Benutzer-ID verweisen.
Vom Spielercharakter
Verwenden Sie das folgende Codebeispiel, um eine neue HumanoidDescription basierend auf den aktuellen Eigenschaften des Spielercharakters zu erstellen:
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
local humanoidDescription = Instance.new("HumanoidDescription")
if humanoid then
humanoidDescription = humanoid:GetAppliedDescription()
endVon einem vorhandenen Outfit
Verwenden Sie den folgenden Beispielcode, um eine HumanoidDescription aus einer Outfit-ID mit Players.GetHumanoidDescriptionFromOutfitID zu erstellen:
local Players = game:GetService("Players")
local outfitId = 480059254
local humanoidDescriptionFromOutfit = Players:GetHumanoidDescriptionFromOutfitId(outfitId)Von einem bestimmten Benutzer
Verwenden Sie den folgenden Beispielcode, um eine HumanoidDescription aus einer Benutzer-ID mit Players:GetHumanoidDescriptionFromUserId() zu erstellen:
local Players = game:GetService("Players")
local userId = 491243243
local humanoidDescriptionFromUser = Players:GetHumanoidDescriptionFromUserId(userId)Ändern von HumanoidDescription
Um die Eigenschaften von HumanoidDescription anzupassen, setzen Sie sie direkt auf die HumanoidDescription oder verwenden Sie eine bestimmte Methode, bevor Sie die HumanoidDescription auf einen Charakter anwenden.
Das folgende Codebeispiel bietet Beispiele für das Setzen der verschiedenen Arten von HumanoidDescription-Eigenschaften:
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)Mehrere Accessoires festlegen
Für schichtweise oder umfangreiche Änderungen an Accessoires können Sie HumanoidDescription:SetAccessories() verwenden, um accessoiresbezogene Updates vorzunehmen. Das folgende Codebeispiel fügt in dieser Reihenfolge einen geschichteten Pullover und eine Jacke zu einer HumanoidDescription hinzu:
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)Anwenden von HumanoidDescription
Wenden Sie HumanoidDescription auf spezifische Humanoid-Charaktere in Ihrem Spiel mit Humanoid:ApplyDescription() oder Humanoid.LoadCharacterWithHumanoidDescription an.
Auf einen einzelnen Charakter
ApplyDescription() kann auf jeden Humanoid abzielen. Verwenden Sie den folgenden Code, um ein neues Paar Sonnenbrillen und einen neuen Torso zum Spielercharakter hinzuzufügen:
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
local descriptionClone = humanoid:GetAppliedDescription()
descriptionClone.Torso = 86500008
-- Mehrere Gesichtszubehör-Assets sind in einem durch Kommas getrennten String erlaubt
descriptionClone.FaceAccessory = descriptionClone.FaceAccessory .. ",2535420239"
-- Wenden Sie die modifizierte "descriptionClone" auf humanoid an
humanoid:ApplyDescription(descriptionClone)
endAuf alle Spielercharaktere
Verwenden Sie den folgenden Beispielcode, um eine HumanoidDescription auf alle aktuellen Spieler im Spiel anzuwenden:
local Players = game:GetService("Players")
for _, player in Players:GetPlayers() do
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Erstellen Sie eine 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
endAuf alle erscheinenden Charaktere
Verwenden Sie den folgenden Beispielcode, um eine spezifische HumanoidDescription für alle erscheinenden Spielercharaktere festzulegen:
local Players = game:GetService("Players")
-- Stoppen Sie das automatische Erscheinen, damit es im "PlayerAdded"-Callback erfolgen kann
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Erstellen Sie eine 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)
-- Charakter mit der HumanoidDescription erscheinen lassen
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
-- Verbinden Sie das "PlayerAdded"-Ereignis mit der Funktion "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)Wenn die HumanoidDescription-Instanz im Explorer erstellt und dem Arbeitsbereich zugewiesen wurde, verwenden Sie den folgenden Beispielcode in einem Script, um auf die Arbeitsbereichsinstanz zuzugreifen:
local Players = game:GetService("Players")
-- Stoppen Sie das automatische Erscheinen, damit es im "PlayerAdded"-Callback erfolgen kann
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Charakter mit "workspace.StudioHumanoidDescription" erscheinen lassen
player:LoadCharacterWithHumanoidDescription(workspace.StudioHumanoidDescription)
end
-- Verbinden Sie das "PlayerAdded"-Ereignis mit der Funktion "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)Geschichtete Accessoires auf Nicht-R15
Eingekäfigte Accessoires, wie geschichtete Accessoires, verwenden WrapTarget und WrapLayer, um sich über ein Ziel Model zu dehnen und zu wickeln. Geschichtete Accessoires können sowohl mit standardmäßigen Spielercharakteren als auch mit Nicht-R15-Modellen funktionieren.
Eine benutzerdefinierte Implementierung von geschichteten Accessoires, wie ein Modell mit einer einzigartigen Käfig-UV-Karte, kann nicht hochgeladen und im Marketplace veröffentlicht werden. Für weitere Informationen siehe Spezifikationen für geschichtete Accessoires.
Egal, ob Sie geschichtete Accessoires auf einem Avatar-R15-Rig implementieren oder ein benutzerdefiniertes Rig verwenden, stellen Sie sicher, dass Ihre Accessoires und Körper die folgenden Punkte enthalten:
- Das Zielmodell, typischerweise der Körper, hat eine WrapTarget-Komponente auf den Meshes, um die zusätzlichen Modelle zu wickeln.
- Das Schichtmodell, typischerweise die Kleidung oder das Accessoire, hat eine WrapLayer-Komponente auf den Meshes, die dazu bestimmt sind, das Zielmodell zu wickeln.
- Der äußere Käfig des Zielmodells und der innere und äußere Käfig des Schichtmodells haben übereinstimmende UV-Karten.
- Die entsprechenden Vertizes auf dem Zielkäfig sollten die gleichen UVs wie die Vertizes auf dem Schichtkäfig haben.
- Wenn Ihr Zielmodell nicht R15 ist oder keine Humanoid enthält, müssen Sie ein Weld-Objekt zum schichtenden MeshPart hinzufügen.
- Das Weld muss Part0 und Part1 so einstellen, dass es das schichtende MeshPart mit der Part-Hierarchie des Modells verbindet. Zum Beispiel bezieht sich Part0 auf das Accessoire und Part1 auf das übergeordnete Part.
- Wenn Ihr Zielmodell sowohl R15 ist als auch eine Humanoid enthält, wird dieses Schweißen automatisch erstellt.