Hầu hết các trò chơi cho phép người chơi sử dụng avatar Roblox của riêng họ, mặc dù một số trò chơi triển khai hệ thống tùy chỉnh trong trò chơi như mẫu UGC Homestore. Các trò chơi khác thực hiện các sửa đổi hạn chế cho avatar của người chơi như mũ bảo hiểm, cánh, hoặc phụ kiện phù hợp với thể loại.
Để tạo ra một trò chơi độc đáo thay đổi ngoại hình của người dùng, bạn có thể tùy chỉnh các thuộc tính nhân vật mặc định thông qua cài đặt avatar hoặc tùy chỉnh ngoại hình thủ công.
Cài đặt avatar toàn cầu
Tệp ⟩ Cài đặt Avatar trong Studio cho phép bạn nhanh chóng thiết lập một số thuộc tính nhân vật người chơi toàn cầu trong trò chơi của bạn. Những cài đặt này áp dụng toàn cầu cho tất cả các mô hình nhân vật người chơi tham gia trò chơi của bạn. Để sửa đổi các nhân vật cụ thể, chẳng hạn như mô hình nhân vật không phải người chơi, hãy xem tùy chỉnh ngoại hình thủ công.
Trong cửa sổ này, bạn có thể thiết lập nhiều cài đặt cho quần áo, phụ kiện, bộ phận cơ thể, hành vi va chạm, hoạt ảnh và nhiều hơn nữa. Khi chỉnh sửa các cài đặt này, một bản xem trước của các cài đặt đã áp dụng sẽ hiển thị trong không gian làm việc.
Để biết thêm thông tin, hãy xem Cài đặt Avatar.
Tùy chỉnh ngoại hình thủ công
Mô hình nhân vật chứa một đối tượng Humanoid cung cấp cho mô hình các đặc điểm đặc biệt, chẳng hạn như đi bộ, nhảy, trang bị đồ vật và tương tác với môi trường.
Bạn có thể lập trình sửa đổi một Humanoid bằng cách cập nhật HumanoidDescription. Điều này bao gồm các mô hình nhân vật người chơi hoặc mô hình nhân vật không phải người chơi trong trò chơi của bạn.
Bạn có thể điều chỉnh các thuộc tính nhân vật sau trong trò chơi của bạn bằng cách sử dụng HumanoidDescription:
| Thuộc tính nhân vật | Mô tả |
|---|---|
| Tỷ lệ | Giá trị số cho các đặc điểm vật lý chiều cao, chiều rộng, đầu, loại cơ thể và tỷ lệ. Điều này không ảnh hưởng đến các loại cơ thể R6. |
| Phụ kiện | Các ID tài sản của phụ kiện được trang bị bởi một nhân vật. |
| Quần áo cổ điển | Các ID tài sản của Shirt, Pants, và ShirtGraphic mà bạn có thể áp dụng cho nhân vật. |
| Bộ phận cơ thể | Các ID tài sản của các bộ phận Mặt, Đầu, Thân, Cánh tay phải, Cánh tay trái, Chân phải và Chân trái của một nhân vật. |
| Màu cơ thể | Các BodyColors của các bộ phận riêng lẻ của nhân vật. |
| Hoạt ảnh | Các ID tài sản của Hoạt ảnh mà bạn có thể sử dụng trên một nhân vật. |
Tùy chỉnh một nhân vật với HumanoidDescription bằng cách thực hiện các bước sau:
- Tạo một mô tả từ nhân vật của người dùng, một ID trang phục cụ thể, hoặc từ một ID người dùng cụ thể.
- Sửa đổi mô tả để tùy chỉnh các thuộc tính mà bạn muốn áp dụng cho nhân vật Humanoid.
- Áp dụng mô tả cho một nhân vật đơn lẻ, tất cả các nhân vật người chơi, hoặc thậm chí cho tất cả các nhân vật đang xuất hiện.
Tạo HumanoidDescription
Bạn có thể tạo một thể hiện HumanoidDescription mới trực tiếp trong cấu trúc Explorer hoặc trong một Script với mã sau:
local humanoidDescription = Instance.new("HumanoidDescription")Trong hầu hết các trường hợp, bạn nên sử dụng một HumanoidDescription hiện có thay vì một HumanoidDescription mới mặc định bằng cách tham chiếu đến một nhân vật người chơi hiện có, trang phục avatar, hoặc ID người dùng.
Từ nhân vật người chơi
Sử dụng mẫu mã sau để tạo một HumanoidDescription mới dựa trên các thuộc tính hiện tại của nhân vật người chơi:
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
local humanoidDescription = Instance.new("HumanoidDescription")
if humanoid then
humanoidDescription = humanoid:GetAppliedDescription()
endTừ một trang phục hiện có
Sử dụng mã mẫu sau để tạo một HumanoidDescription từ một ID trang phục bằng cách sử dụng Players.GetHumanoidDescriptionFromOutfitID:
local Players = game:GetService("Players")
local outfitId = 480059254
local humanoidDescriptionFromOutfit = Players:GetHumanoidDescriptionFromOutfitId(outfitId)Từ một người dùng cụ thể
Sử dụng mã mẫu sau để tạo một HumanoidDescription từ một ID người dùng bằng cách sử dụng Players:GetHumanoidDescriptionFromUserId():
local Players = game:GetService("Players")
local userId = 491243243
local humanoidDescriptionFromUser = Players:GetHumanoidDescriptionFromUserId(userId)Sửa đổi HumanoidDescription
Để tùy chỉnh các thuộc tính của HumanoidDescription, hãy thiết lập chúng trực tiếp trên HumanoidDescription hoặc sử dụng một phương thức chỉ định trước khi áp dụng HumanoidDescription cho một nhân vật.
Mẫu mã sau cung cấp các ví dụ về việc thiết lập các loại thuộc tính khác nhau của 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)Đặt nhiều phụ kiện
Đối với các thay đổi phụ kiện theo lớp hoặc hàng loạt, bạn có thể sử dụng HumanoidDescription:SetAccessories() để thực hiện các cập nhật liên quan đến phụ kiện. Mẫu mã sau thêm một chiếc áo len và một chiếc áo khoác theo thứ tự vào một 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)Áp dụng HumanoidDescription
Áp dụng HumanoidDescription cho các nhân vật Humanoid cụ thể trong trò chơi của bạn với Humanoid:ApplyDescription() hoặc Humanoid.LoadCharacterWithHumanoidDescription.
Trên một nhân vật đơn lẻ
ApplyDescription() có thể nhắm đến bất kỳ Humanoid nào. Sử dụng mã sau để thêm một cặp kính râm mới và một thân mới cho nhân vật người chơi:
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
local descriptionClone = humanoid:GetAppliedDescription()
descriptionClone.Torso = 86500008
-- Nhiều tài sản phụ kiện mặt được phép trong một chuỗi phân tách bằng dấu phẩy
descriptionClone.FaceAccessory = descriptionClone.FaceAccessory .. ",2535420239"
-- Áp dụng "descriptionClone" đã sửa đổi cho humanoid
humanoid:ApplyDescription(descriptionClone)
endTrên tất cả các nhân vật người chơi
Sử dụng mã mẫu sau để áp dụng một HumanoidDescription cho tất cả các người chơi hiện tại trong trò chơi:
local Players = game:GetService("Players")
for _, player in Players:GetPlayers() do
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Tạo một 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
endTrên tất cả các nhân vật đang xuất hiện
Sử dụng mã mẫu sau để thiết lập một HumanoidDescription cụ thể cho tất cả các nhân vật người chơi đang xuất hiện:
local Players = game:GetService("Players")
-- Dừng việc xuất hiện tự động để có thể thực hiện trong callback "PlayerAdded"
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Tạo một 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)
-- Xuất hiện nhân vật với HumanoidDescription
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
-- Kết nối sự kiện "PlayerAdded" với hàm "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)Nếu thể hiện HumanoidDescription được tạo trong Explorer và được gán cho không gian làm việc, hãy sử dụng mã mẫu sau trong một Script để truy cập thể hiện trong không gian làm việc:
local Players = game:GetService("Players")
-- Dừng việc xuất hiện tự động để có thể thực hiện trong callback "PlayerAdded"
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- Xuất hiện nhân vật với "workspace.StudioHumanoidDescription"
player:LoadCharacterWithHumanoidDescription(workspace.StudioHumanoidDescription)
end
-- Kết nối sự kiện "PlayerAdded" với hàm "onPlayerAdded()"
Players.PlayerAdded:Connect(onPlayerAdded)Phụ kiện theo lớp trên không phải R15
Phụ kiện bị nhốt, như phụ kiện theo lớp, sử dụng WrapTarget và WrapLayer để kéo dài và quấn quanh một Model mục tiêu. Phụ kiện theo lớp có thể hoạt động với cả nhân vật R15 Roblox tiêu chuẩn và các mô hình không phải R15.
Việc triển khai tùy chỉnh phụ kiện theo lớp, chẳng hạn như một mô hình sử dụng bản đồ UV lồng cage độc đáo, không thể được tải lên và xuất bản lên Marketplace. Để biết thêm thông tin, hãy xem Thông số kỹ thuật phụ kiện theo lớp.
Dù bạn đang triển khai phụ kiện theo lớp trên một rig avatar R15, hay sử dụng một rig tùy chỉnh, hãy đảm bảo rằng phụ kiện và cơ thể của bạn bao gồm các yếu tố sau:
- Mô hình mục tiêu, thường là cơ thể, có một thành phần WrapTarget trên các mesh mà các mô hình bổ sung dự định quấn quanh.
- Mô hình lớp, thường là quần áo hoặc phụ kiện, có một thành phần WrapLayer trên các mesh dự định quấn quanh mô hình mục tiêu.
- Lồng cage bên ngoài của mô hình mục tiêu, và lồng cage bên trong và bên ngoài của mô hình lớp có các bản đồ UV tương ứng.
- Các đỉnh tương ứng trên lồng cage mục tiêu nên có cùng UV với các đỉnh đó trên lồng cage lớp.
- Nếu mô hình mục tiêu của bạn vừa là R15 vừa bao gồm một Humanoid, thì việc hàn này được tạo tự động.