ほとんどのゲームではプレイヤーが自分のRobloxアバターを使用できますが、いくつかのゲームはUGCホムステアテンプレートのようなゲーム内カスタマイズシステムを実装しています。他のゲームでは、ジャンルに合わせたヘルメット、翼、アクセサリーなど、プレイヤーアバターへの制限された変更を行います。
ユーザーの外観を変更するユニークなゲームを作成するために、アバター設定を通じてデフォルトのキャラクターのプロパティをカスタマイズするか、手動で外観を変更することができます。
グローバルアバター設定
スタジオのファイル ⟩ アバター設定では、ゲーム内のプレイヤーキャラクターのプロパティを迅速に設定できます。これらの設定は、あなたのゲームに参加するすべてのプレイヤーキャラクターモデルにグローバルに適用されます。非プレイヤーキャラクターモデルのような特定のキャラクターを修正するには、手動で外観を変更を参照してください。
このウィンドウでは、衣服、アクセサリー、体の部位、衝突動作、アニメーションなど、さまざまなプリセットを設定できます。これらの設定を編集する際には、適用された設定のプレビューがワークスペースに表示されます。
詳細については、アバター設定をご覧ください。
手動で外観を変更
キャラクターモデルには、モデルに特別な特性を与えるHumanoidオブジェクトが含まれています。これには、歩行、ジャンプ、アイテムを装備すること、環境とインタラクトすることが含まれます。
HumanoidのHumanoidDescriptionを更新することで、プログラム的にHumanoidを変更できます。これには、ゲーム内のプレイヤーキャラクターモデルや非プレイヤーキャラクターモデルが含まれます。
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インスタンスを直接作成できます:
新しいHumanoidDescriptionインスタンスを作成local humanoidDescription = Instance.new("HumanoidDescription")
ほとんどのケースでは、既存のプレイヤーキャラクター、アバターのアウトフィット、またはユーザーIDを参照して、デフォルトの新しいHumanoidDescriptionの代わりに既存のHumanoidDescriptionを使用する必要があります。
プレイヤーキャラクターから
次のコードサンプルを使用して、プレイヤーキャラクターの現在のプロパティに基づいて新しいHumanoidDescriptionを作成します:
プレイヤーキャラクターからHumanoidDescriptionを生成local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")local humanoidDescription = Instance.new("HumanoidDescription")if humanoid thenhumanoidDescription = humanoid:GetAppliedDescription()end
既存のアウトフィットから
次のサンプルコードを使用して、Players.GetHumanoidDescriptionFromOutfitIDを使用してアウトフィットIDからHumanoidDescriptionを作成します:
アウトフィットIDからHumanoidDescriptionを生成local Players = game:GetService("Players")local outfitId = 480059254local humanoidDescriptionFromOutfit = Players:GetHumanoidDescriptionFromOutfitId(outfitId)
特定のユーザーから
次のサンプルコードを使用して、Players:GetHumanoidDescriptionFromUserId()を使用してユーザーIDからHumanoidDescriptionを作成します:
ユーザーIDからHumanoidDescriptionを生成local Players = game:GetService("Players")local userId = 491243243local humanoidDescriptionFromUser = Players:GetHumanoidDescriptionFromUserId(userId)
HumanoidDescriptionを変更
HumanoidDescriptionのプロパティをカスタマイズするには、HumanoidDescriptionに直接設定するか、HumanoidDescriptionをキャラクターに適用する前に特定のメソッドを使用します。
次のコードサンプルは、さまざまなタイプのHumanoidDescriptionのプロパティを設定する例を提供します:
さまざまなHumanoidDescriptionプロパティを更新local humanoidDescription = Instance.new("HumanoidDescription")humanoidDescription.HatAccessory = "2551510151,2535600138"humanoidDescription.BodyTypeScale = 0.1humanoidDescription.ClimbAnimation = 619521311humanoidDescription.Face = 86487700humanoidDescription.GraphicTShirt = 1711661humanoidDescription.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を適用
Humanoid:ApplyDescription()またはHumanoid.LoadCharacterWithHumanoidDescriptionを使用して、ゲーム内の特定のHumanoidキャラクターにHumanoidDescriptionを適用します。
1つのキャラクターに
ApplyDescription()は任意のHumanoidをターゲットにできます。次のコードを使用して、プレイヤーキャラクターに新しいサングラスと新しいトルソーを追加します:
特定のプレイヤーキャラクターのHumanoidDescriptionを更新local humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid thenlocal descriptionClone = humanoid:GetAppliedDescription()descriptionClone.Torso = 86500008-- 複数の顔アクセサリーアセットは、カンマ区切りの文字列で許可されていますdescriptionClone.FaceAccessory = descriptionClone.FaceAccessory .. ",2535420239"-- 変更された"descriptionClone"をhumanoidに適用しますhumanoid:ApplyDescription(descriptionClone)end
すべてのプレイヤーキャラクターに
次のサンプルコードを使用して、ゲーム内のすべての現在のプレイヤーにHumanoidDescriptionを適用します:
すべての現在のプレイヤーキャラクターのHumanoidDescriptionを更新local Players = game:GetService("Players")for _, player in Players:GetPlayers() dolocal humanoid = player.Character and player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid then-- HumanoidDescriptionを作成local 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
すべての生成キャラクターに
次のサンプルコードを使用して、すべての生成プレイヤーキャラクターに特定のHumanoidDescriptionを設定します:
すべての生成キャラクターの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)
ExplorerにHumanoidDescriptionインスタンスが作成され、ワークスペースに親付けされた場合、次のサンプルコードを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 Robloxキャラクターおよび非R15モデルの両方で動作できます。
ユニークなケージUVマップを使用するモデルなど、レイヤード衣服のカスタム実装は、マーケットプレイスにアップロードして公開することはできません。詳細については、レイヤード衣服の仕様をご覧ください。
アバターR15リグにレイヤードアクセサリーを実装するか、カスタムリグを使用する際には、アクセサリーやボディに以下の要素が含まれていることを確認してください:
- 対象モデル、通常はボディは、追加モデルがラップすることを目的としたメッシュにWrapTargetコンポーネントを持っています。
- レイヤリングモデル、通常は衣服やアクセサリーは、対象モデルをラップしようとするメッシュにWrapLayerコンポーネントを持っています。
- 対象モデルの外部ケージと、レイヤリングモデルの内部および外部ケージは、同じUVマップを持っています。
- 対象ケージの対応する頂点は、レイヤーケージのそれらの頂点と同じUVを持っている必要があります。
- 対象モデルがR15で、Humanoidが含まれている場合、このウェルドは自動的に作成されます。