Większość gier pozwala graczom używać ich własnego awatara Roblox, chociaż niektóre wdrażają system dostosowywania w grze, taki jak szablon UGC Homestore. Inne gry dokonują ograniczonych modyfikacji awatarów graczy, takich jak hełmy, skrzydła lub akcesoria, które pasują do gatunku.
Aby stworzyć unikalną grę, która zmienia wygląd użytkowników, możesz dostosować domyślne właściwości postaci poprzez ustawienia awatara lub ręcznie modyfikować wygląd.
Globalne ustawienia awatara
W Studio, menu Plik ⟩ Ustawienia awatara pozwala szybko ustawić kilka globalnych właściwości postaci gracza w grze. Te ustawienia stosują się globalnie do wszystkich modeli postaci gracza, które dołączają do Twojej gry. Aby modyfikować konkretne postacie, takie jak modele postaci niegracza, zobacz sekcję ręcznie modyfikować wygląd.
W tym oknie możesz ustawić różne presety dla ubrań, akcesoriów, części ciała, zachowania przy kolizji, animacji i innych. Podczas edytowania tych ustawień w przestrzeni roboczej wyświetla się podgląd zastosowanych ustawień.
Aby uzyskać więcej informacji, zapoznaj się z dokumentacją Ustawienia awatara.
Ręcznie modyfikować wygląd
Modele postaci zawierają obiekt Humanoid, który nadaje modelowi specjalne cechy, takie jak chodzenie, skakanie, zakładanie przedmiotów i interakcja z otoczeniem.
Możesz programowo modyfikować Humanoid, aktualizując HumanoidDescription. Dotyczy to modeli postaci graczy lub modeli postaci niegracza w Twojej grze.
Możesz dostosować następujące właściwości postaci w swojej grze, używając HumanoidDescription:
| Właściwość postaci | Opis |
|---|---|
| Skala | Wartości liczbowe dla cech fizycznych height, width, head, body type i proportion. To nie wpływa na typy ciała R6. |
| Akcesoria | ID zasobów accessories wyposażonych przez postać. |
| Ubrania klasyczne | ID zasobów dla obrazów tekstur Shirt, Pants i ShirtGraphic, które można zastosować do postaci. |
| Część ciała | ID zasobów dla części Face, Head, Torso, RightArm, LeftArm, RightLeg i LeftLeg postaci. |
| Kolory ciała | Właściwości BodyColors indywidualnych części postaci. |
| Animacje | ID zasobów Animations, które można użyć na postaci. |
Dostosuj postać z użyciem HumanoidDescription, wykonując następujące kroki:
- Utwórz opis z postaci użytkownika, konkretnego ID stroju lub konkretnego ID użytkownika.
- Modyfikuj opis, aby dostosować właściwości, które chcesz zastosować do postaci Humanoid.
- Zastosuj opis na pojedynczej postaci, wszystkich postaciach graczy lub nawet na wszystkich rodzących się postaciach.
Utwórz HumanoidDescription
Możesz utworzyć nową instancję HumanoidDescription bezpośrednio w hierarchii Explorer lub w Script z następującym kodem:
Utwórz nową instancję HumanoidDescriptionlocal humanoidDescription = Instance.new("HumanoidDescription")
W większości przypadków powinieneś użyć istniejącego HumanoidDescription, zamiast domyślnego nowego HumanoidDescription, odwołując się do istniejącej postaci gracza, stroju awatara lub ID użytkownika.
Z postaci gracza
Użyj następującego przykładu kodu, aby utworzyć nową HumanoidDescription na podstawie aktualnych właściwości postaci gracza:
Generuj HumanoidDescription z postaci graczalocal humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")local humanoidDescription = Instance.new("HumanoidDescription")if humanoid thenhumanoidDescription = humanoid:GetAppliedDescription()end
Z istniejącego stroju
Użyj następującego przykładu kodu, aby stworzyć HumanoidDescription z ID stroju przy użyciu Players.GetHumanoidDescriptionFromOutfitID:
Generuj HumanoidDescription z ID strojulocal Players = game:GetService("Players")local outfitId = 480059254local humanoidDescriptionFromOutfit = Players:GetHumanoidDescriptionFromOutfitId(outfitId)
Z konkretnego użytkownika
Użyj następującego przykładu kodu, aby stworzyć HumanoidDescription z ID użytkownika przy użyciu Players:GetHumanoidDescriptionFromUserId():
Generuj HumanoidDescription z ID użytkownikalocal Players = game:GetService("Players")local userId = 491243243local humanoidDescriptionFromUser = Players:GetHumanoidDescriptionFromUserId(userId)
Modyfikuj HumanoidDescription
Aby dostosować właściwości HumanoidDescription, ustaw je bezpośrednio na HumanoidDescription lub użyj określonej metody przed zastosowaniem HumanoidDescription do postaci.
Poniższy przykład kodu przedstawia przykłady ustawiania różnych typów właściwości HumanoidDescription:
Aktualizuj różne właściwości HumanoidDescriptionlocal humanoidDescription = Instance.new("HumanoidDescription")humanoidDescription.HatAccessory = "2551510151,2535600138"humanoidDescription.BodyTypeScale = 0.1humanoidDescription.ClimbAnimation = 619521311humanoidDescription.Face = 86487700humanoidDescription.GraphicTShirt = 1711661humanoidDescription.HeadColor = Color3.new(0, 1, 0)
Ustaw wiele akcesoriów
Aby dokonać zmian w akcesoriach warstwowych lub zbiorczych, możesz użyć HumanoidDescription:SetAccessories(), aby zaktualizować akcesoria. Poniższy przykład kodu dodaje warstwowy sweter i kurtkę w tej kolejności do HumanoidDescription:
Zmień wiele akcesoriów jednocześnielocal 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)
Zastosuj HumanoidDescription
Zastosuj HumanoidDescription do określonych postaci Humanoid w swojej grze za pomocą Humanoid:ApplyDescription() lub Humanoid.LoadCharacterWithHumanoidDescription.
Na pojedynczej postaci
ApplyDescription() może celować w dowolny Humanoid. Użyj następującego kodu, aby dodać nową parę okularów przeciwsłonecznych i nowy tors do postaci gracza:
Aktualizuj HumanoidDescription dla konkretnej postaci graczalocal humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid thenlocal descriptionClone = humanoid:GetAppliedDescription()descriptionClone.Torso = 86500008-- Dozwolone są wiele zasobów akcesoriów w ciągu oddzielonym przecinkamidescriptionClone.FaceAccessory = descriptionClone.FaceAccessory .. ",2535420239"-- Zastosuj zmodyfikowany "descriptionClone" do humanoidahumanoid:ApplyDescription(descriptionClone)end
Na wszystkich postaciach graczy
Użyj następującego przykładu kodu, aby zastosować HumanoidDescription do wszystkich aktualnych graczy w grze:
Aktualizuj HumanoidDescription dla wszystkich aktualnych postaci graczylocal Players = game:GetService("Players")for _, player in Players:GetPlayers() dolocal humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid then-- Utwórz HumanoidDescriptionlocal humanoidDescription = Instance.new("HumanoidDescription")humanoidDescription.HatAccessory = "2551510151,2535600138"humanoidDescription.BodyTypeScale = 0.1humanoidDescription.ClimbAnimation = 619521311humanoidDescription.Face = 86487700humanoidDescription.GraphicTShirt = 1711661humanoidDescription.HeadColor = Color3.new(0, 1, 0)humanoid:ApplyDescription(humanoidDescription)endend
Na wszystkich rodzących się postaciach
Użyj następującego przykładu kodu, aby ustawić konkretną HumanoidDescription dla wszystkich rodzących się postaci graczy:
Aktualizuj HumanoidDescription dla wszystkich rodzących się postaci
local Players = game:GetService("Players")
-- Zatrzymaj automatyczne rodzenie, aby można je było przeprowadzić w zwrotnym wywołaniu "PlayerAdded"
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Utwórz 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)
-- Rodzaj postaci z HumanoidDescription
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
-- Połącz zdarzenie "PlayerAdded" z funkcją "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)
Jeśli instancja HumanoidDescription została utworzona w Explorer i przypisana do przestrzeni roboczej, użyj następującego przykładu kodu w Script, aby uzyskać dostęp do instancji przestrzeni roboczej:
local Players = game:GetService("Players")
-- Zatrzymaj automatyczne rodzenie, aby można je było przeprowadzić w zwrotnym wywołaniu "PlayerAdded"
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Rodzaj postaci z "workspace.StudioHumanoidDescription"
player:LoadCharacterWithHumanoidDescription(workspace.StudioHumanoidDescription)
end
-- Połącz zdarzenie "PlayerAdded" z funkcją "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)
Ubrania warstwowe na nie-R15
Akcesoria w klatkach, takie jak ubrania warstwowe, używają WrapTarget i WrapLayer, aby rozciągać i owijać nad celem Model. Akcesoria warstwowe mogą działać zarówno z standardowymi postaciami R15 Roblox, jak i modelami nie-R15.
Własna implementacja ubrań warstwowych, np. model używający unikalnej mapy UV klatki, nie może być przesyłana i publikowana na Marketplace. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją specyfikacji ubrań warstwowych.
Niezależnie od tego, czy implementujesz akcesoria warstwowe na rigach awatara R15, czy używasz własnego rig, upewnij się, że Twoje akcesoria i ciała zawierają następujące elementy:
- Model docelowy, zazwyczaj ciało, ma komponent WrapTarget na siatkach, które dodatkowe modele mają zakładać.
- Model warstwowy, zazwyczaj ubranie lub akcesorium, ma komponent WrapLayer na siatkach, które mają owijać model docelowy.
- Zewnętrzna klatka modelu docelowego oraz wewnętrzna i zewnętrzna klatka modelu warstwowego mają dopasowane mapy UV.
- Odpowiednie wierzchołki na klatce docelowej powinny mieć te same UV, co te wierzchołki na klatce warstwowej.
- Jeśli Twój model docelowy jest zarówno R15, jak i zawiera Humanoid, to złączenie jest tworzone automatycznie.