ほとんどのゲームではプレイヤーが自分のRobloxアバターを使用できるようにしていますが、一部のゲームではUGCホムストアテンプレートのようなゲーム内カスタマイズシステムを実装しています。他のゲームでは、ヘルメット、翼、またはジャンルに合ったアクセサリーなど、プレイヤーアバターに対して限られた変更を行います。
ユーザーの外見を変更するユニークなゲームを作成するには、アバター設定を通じてデフォルトのキャラクタープロパティをカスタマイズするか、手動で外見を変更することができます。
グローバルアバター設定
スタジオのファイル ⟩ アバター設定を使用すると、ゲーム内のプレイヤーキャラクターのプロパティを迅速に設定できます。これらの設定は、ゲームに参加するすべてのプレイヤーキャラクターモデルにグローバルに適用されます。特定のキャラクター、たとえば非プレイヤーキャラクターモデルを変更するには、手動で外見を変更を参照してください。
このウィンドウでは、衣服、アクセサリー、体の部位、衝突動作、アニメーションなどのさまざまなプリセットを設定できます。これらの設定を編集すると、適用された設定のプレビューがワークスペースに表示されます。
詳細については、アバター設定を参照してください。
手動で外見を変更
キャラクターモデルには、モデルに特別な特性(歩行、ジャンプ、アイテムの装備、環境との相互作用など)を与えるHumanoidオブジェクトが含まれています。
Humanoidをプログラム的に変更するには、HumanoidDescriptionを更新します。これには、ゲーム内のプレイヤーキャラクターモデルや非プレイヤーキャラクターモデルが含まれます。
ゲーム内でHumanoidDescriptionを使用して次のキャラクタープロパティを調整できます。
| キャラクタープロパティ | 説明 |
|---|---|
| スケール | 物理的特性の数値 height, width, head, body type および proportion。これはR6ボディタイプには影響しません。 |
| アクセサリー | キャラクターによって装備されている accessories のアセットID。 |
| クラシック衣服 | キャラクターに適用できる Shirt, Pants, および ShirtGraphic 画像テクスチャのアセットID。 |
| 体の部位 | キャラクターの Face, Head, Torso, RightArm, LeftArm, RightLeg および LeftLeg のアセットID。 |
| 体の色 | キャラクターの個々の部品の BodyColors。 |
| アニメーション | キャラクターで使用できる Animations のアセットID。 |
HumanoidDescriptionを使用してキャラクターをカスタマイズするには、次の手順を実行します。
- ユーザーのキャラクター、特定のアウトフィットID、または特定のユーザーIDから説明を作成します。
- 単一のキャラクター、すべてのプレイヤーキャラクター、またはすべてのスポーンキャラクターに説明を適用します。
HumanoidDescriptionを作成
次のコードを使用して、Explorer階層内またはScript内で新しいHumanoidDescriptionインスタンスを直接作成できます。
local humanoidDescription = Instance.new("HumanoidDescription")ほとんどの場合、既存のプレイヤーキャラクター、アバターのアウトフィット、またはユーザーIDを参照して、デフォルトの新しいHumanoidDescriptionではなく、既存のHumanoidDescriptionを使用するべきです。
プレイヤーキャラクターから
次のコードサンプルを使用して、プレイヤーキャラクターの現在のプロパティに基づいて新しいHumanoidDescriptionを作成します。
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
local humanoidDescription = Instance.new("HumanoidDescription")
if humanoid then
humanoidDescription = humanoid:GetAppliedDescription()
end既存のアウトフィットから
次のサンプルコードを使用して、Players.GetHumanoidDescriptionFromOutfitIDを使用してアウトフィットIDからHumanoidDescriptionを作成します。
local Players = game:GetService("Players")
local outfitId = 480059254
local humanoidDescriptionFromOutfit = Players:GetHumanoidDescriptionFromOutfitId(outfitId)特定のユーザーから
次のサンプルコードを使用して、Players:GetHumanoidDescriptionFromUserId()を使用してユーザーIDからHumanoidDescriptionを作成します。
local Players = game:GetService("Players")
local userId = 491243243
local humanoidDescriptionFromUser = Players:GetHumanoidDescriptionFromUserId(userId)HumanoidDescriptionを変更
HumanoidDescriptionのプロパティをカスタマイズするには、HumanoidDescriptionに直接設定するか、HumanoidDescriptionをキャラクターに適用する前に指定されたメソッドを使用します。
次のコードサンプルは、さまざまなタイプの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)複数のアクセサリーを設定
レイヤーまたは一括アクセサリーの変更を行うには、HumanoidDescription:SetAccessories()を使用してアクセサリー関連の更新を行うことができます。次のコードサンプルは、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)HumanoidDescriptionを適用
HumanoidDescriptionをゲーム内の特定のHumanoidキャラクターに適用するには、Humanoid:ApplyDescription()またはHumanoid.LoadCharacterWithHumanoidDescriptionを使用します。
単一のキャラクターに対して
ApplyDescription()は任意のHumanoidをターゲットにできます。次のコードを使用して、プレイヤーキャラクターに新しいサングラスと新しいトルソを追加します。
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
local descriptionClone = humanoid:GetAppliedDescription()
descriptionClone.Torso = 86500008
-- 複数の顔アクセサリーアセットはカンマ区切りの文字列で許可されます
descriptionClone.FaceAccessory = descriptionClone.FaceAccessory .. ",2535420239"
-- 修正された "descriptionClone" をhumanoidに適用
humanoid:ApplyDescription(descriptionClone)
endすべてのプレイヤーキャラクターに対して
次のサンプルコードを使用して、ゲーム内のすべての現在のプレイヤーにHumanoidDescriptionを適用します。
local Players = game:GetService("Players")
for _, player in Players:GetPlayers() do
local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- 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
endすべてのスポーンキャラクターに対して
次のサンプルコードを使用して、すべてのスポーンプレイヤーキャラクターに特定のHumanoidDescriptionを設定します。
local Players = game:GetService("Players")
-- 自動スポーンを停止して、"PlayerAdded"コールバックで行えるようにします
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- 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)
-- HumanoidDescriptionでキャラクターをスポーン
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
-- "PlayerAdded"イベントを"onPlayerAdded()"関数に接続
Players.PlayerAdded:Connect(onPlayerAdded)HumanoidDescriptionインスタンスがExplorer内で作成され、ワークスペースに親付けされている場合は、次のサンプルコードをScript内で使用してワークスペースインスタンスにアクセスします。
local Players = game:GetService("Players")
-- 自動スポーンを停止して、"PlayerAdded"コールバックで行えるようにします
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
-- "workspace.StudioHumanoidDescription"でキャラクターをスポーン
player:LoadCharacterWithHumanoidDescription(workspace.StudioHumanoidDescription)
end
-- "PlayerAdded"イベントを"onPlayerAdded()"関数に接続
Players.PlayerAdded:Connect(onPlayerAdded)非R15のレイヤーアクセサリー
ケージアクセサリー、レイヤーアクセサリーのように、WrapTargetとWrapLayerを使用してターゲットModelに伸ばしてラップします。レイヤーアクセサリーは、標準のプレイヤーキャラクターと非R15モデルの両方で機能します。
ユニークなケージUVマップを使用するモデルなど、レイヤーアクセサリーのカスタム実装は、マーケットプレイスにアップロードして公開することはできません。詳細については、レイヤーアクセサリーの仕様を参照してください。
アバターR15リグにレイヤーアクセサリーを実装する場合でも、カスタムリグを使用する場合でも、アクセサリーとボディが次の要件を満たしていることを確認してください。
- ターゲットモデル、通常はボディには、追加のモデルがラップされることを意図したメッシュにWrapTargetコンポーネントがあります。
- レイヤリングモデル、通常は衣服やアクセサリーには、ターゲットモデルをラップすることを意図したメッシュにWrapLayerコンポーネントがあります。
- ターゲットモデルの外側のケージと、レイヤリングモデルの内側と外側のケージは、同じUVマップを持っています。
- ターゲットケージの対応する頂点は、レイヤーケージのそれらの頂点と同じUVを持つ必要があります。
- ターゲットモデルがR15であり、Humanoidを含む場合、このウェルドは自動的に作成されます。