Większość gier pozwala graczom używać własnego awatara Roblox, chociaż niektóre implementują system dostosowywania w grze, taki jak szablon UGC Homestore. Inne gry wprowadzają ograniczone modyfikacje awatarów graczy, takie 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 za pomocą ustawień awatara lub ręcznie modyfikować wygląd.
Globalne ustawienia awatara
Plik ⟩ Ustawienia awatara w Studio pozwala szybko ustawić kilka globalnych właściwości postaci gracza w twojej grze. Te ustawienia mają zastosowanie globalnie do wszystkich modeli postaci gracza dołączających do twojej gry. Aby zmodyfikować konkretne postacie, takie jak modele postaci niegraczy, zobacz ręcznie modyfikować wygląd.
W tym oknie możesz ustawić różne presety dla odzieży, akcesoriów, części ciała, zachowania kolizji, animacji i innych. Podczas edytowania tych ustawień w przestrzeni roboczej wyświetla się podgląd zastosowanych ustawień.
Aby uzyskać więcej informacji, zobacz 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 niegraczy 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 wysokość, szerokość, głowa, typ ciała i proporcja. To nie wpływa na typy ciała R6. |
| Akcesoria | Identyfikatory zasobów akcesoria wyposażone przez postać. |
| Klasyczna odzież | Identyfikatory zasobów Shirt, Pants i ShirtGraphic tekstur obrazów, które możesz zastosować do postaci. |
| Część ciała | Identyfikatory zasobów twarz, głowa, tułów, prawa ręka, lewa ręka, prawa noga i lewa noga części postaci. |
| Kolory ciała | BodyColors poszczególnych części postaci. |
| Animacje | Identyfikatory zasobów animacje, które możesz użyć na postaci. |
Dostosuj postać za pomocą HumanoidDescription, wykonując następujące kroki:
- Utwórz opis z postaci użytkownika, konkretnego identyfikatora stroju lub z konkretnego identyfikatora 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 pojawiających się postaciach.
Utwórz HumanoidDescription
Możesz utworzyć nową instancję HumanoidDescription bezpośrednio w hierarchii Eksploratora lub w Script za pomocą następującego kodu:
local humanoidDescription = Instance.new("HumanoidDescription")W większości przypadków powinieneś używać istniejącego HumanoidDescription zamiast domyślnej nowej HumanoidDescription, odwołując się do istniejącej postaci gracza, stroju awatara lub identyfikatora 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:
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
local humanoidDescription = Instance.new("HumanoidDescription")
if humanoid then
humanoidDescription = humanoid:GetAppliedDescription()
endZ istniejącego stroju
Użyj następującego przykładu kodu, aby utworzyć HumanoidDescription z identyfikatora stroju, używając Players.GetHumanoidDescriptionFromOutfitID:
local Players = game:GetService("Players")
local outfitId = 480059254
local humanoidDescriptionFromOutfit = Players:GetHumanoidDescriptionFromOutfitId(outfitId)Z konkretnego użytkownika
Użyj następującego przykładu kodu, aby utworzyć HumanoidDescription z identyfikatora użytkownika, używając Players:GetHumanoidDescriptionFromUserId():
local Players = game:GetService("Players")
local userId = 491243243
local 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.
Następujący przykład kodu przedstawia przykłady ustawiania różnych typów właściwości 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)Ustaw wiele akcesoriów
Dla warstwowych lub zbiorczych zmian akcesoriów możesz użyć HumanoidDescription:SetAccessories(), aby wprowadzić aktualizacje związane z akcesoriami. Następujący przykład kodu dodaje warstwowy sweter i kurtkę w tej kolejności do 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)Zastosuj HumanoidDescription
Zastosuj HumanoidDescription do konkretnych postaci Humanoid w twojej 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 tułów do postaci gracza:
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
local descriptionClone = humanoid:GetAppliedDescription()
descriptionClone.Torso = 86500008
-- Dozwolone są wiele zasobów akcesoriów twarzy w ciągu oddzielonym przecinkiem
descriptionClone.FaceAccessory = descriptionClone.FaceAccessory .. ",2535420239"
-- Zastosuj zmodyfikowany "descriptionClone" do humanoida
humanoid:ApplyDescription(descriptionClone)
endNa wszystkich postaciach graczy
Użyj następującego przykładu kodu, aby zastosować HumanoidDescription do wszystkich aktualnych graczy w grze:
local Players = game:GetService("Players")
for _, player in Players:GetPlayers() do
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- 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)
humanoid:ApplyDescription(humanoidDescription)
end
endNa wszystkich pojawiających się postaciach
Użyj następującego przykładu kodu, aby ustawić konkretną HumanoidDescription dla wszystkich pojawiających się postaci graczy:
local Players = game:GetService("Players")
-- Zatrzymaj automatyczne pojawianie się, aby można to było zrobić w wywołaniu zwrotnym "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)
-- Pojawienie się 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 Eksploratorze i przypisana do przestrzeni roboczej, użyj następującego przykładu kodu w Script, aby uzyskać dostęp do instancji w przestrzeni roboczej:
local Players = game:GetService("Players")
-- Zatrzymaj automatyczne pojawianie się, aby można to było zrobić w wywołaniu zwrotnym "PlayerAdded"
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Pojawienie się postaci z "workspace.StudioHumanoidDescription"
player:LoadCharacterWithHumanoidDescription(workspace.StudioHumanoidDescription)
end
-- Połącz zdarzenie "PlayerAdded" z funkcją "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)Warstwowe akcesoria na non-R15
Akcesoria w klatkach, takie jak akcesoria warstwowe, używają WrapTarget i WrapLayer, aby rozciągać i owijać się wokół docelowego Model. Akcesoria warstwowe mogą działać zarówno z standardowymi postaciami graczy, jak i modelami non-R15.
Niestandardowa implementacja akcesoriów warstwowych, takich jak model używający unikalnej mapy UV klatki, nie może być przesyłana i publikowana na rynku. Aby uzyskać więcej informacji, zobacz specyfikacje akcesoriów warstwowych.
Niezależnie od tego, czy implementujesz akcesoria warstwowe na rig R15 awatara, czy używasz niestandardowego rig, upewnij się, że twoje akcesoria i ciała zawierają następujące elementy:
- Docelowy model, zazwyczaj ciało, ma komponent WrapTarget na siatkach, które mają być owinięte przez dodatkowe modele.
- Model warstwowy, zazwyczaj odzież 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 warstwy.
- Jeśli twój model docelowy jest zarówno R15, jak i zawiera Humanoid, ten spaw jest tworzony automatycznie.