キャラクターの外見

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

ほとんどのゲームではプレイヤーが自分の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を使用してキャラクターをカスタマイズする手順は次のとおりです:

  1. ユーザーのキャラクター、特定のアウトフィットID、または特定のユーザーIDから説明を作成します。
  2. Humanoidキャラクターに適用したいプロパティをカスタマイズするために説明を変更します。
  3. 単一のキャラクター、すべてのプレイヤーキャラクター、またはすべてのスポーンキャラクターに説明を適用します。

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 then
humanoidDescription = humanoid:GetAppliedDescription()
end

既存のアウトフィットから

次のサンプルコードを使用して、Players.GetHumanoidDescriptionFromOutfitIDを使用してアウトフィットIDからHumanoidDescriptionを作成します:

アウトフィットIDからHumanoidDescriptionを生成
local Players = game:GetService("Players")
local outfitId = 480059254
local humanoidDescriptionFromOutfit = Players:GetHumanoidDescriptionFromOutfitId(outfitId)

特定のユーザーから

次のサンプルコードを使用して、Players:GetHumanoidDescriptionFromUserId()を使用してユーザーIDからHumanoidDescriptionを作成します:

ユーザーIDからHumanoidDescriptionを生成
local Players = game:GetService("Players")
local userId = 491243243
local humanoidDescriptionFromUser = Players:GetHumanoidDescriptionFromUserId(userId)

HumanoidDescriptionを変更

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をターゲットにできます。次のコードを使用して、プレイヤーキャラクターに新しいサングラスと新しいトルソを追加します:

特定のプレイヤーキャラクターのHumanoidDescriptionを更新
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を適用します:

すべての現在のプレイヤーキャラクターの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を設定します:

すべてのスポーンキャラクターの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のレイヤーアクセサリー

ケージアクセサリー、レイヤーアクセサリーのように、WrapTargetWrapLayerを使用してターゲットModelの上に伸ばしてラップします。レイヤーアクセサリーは、標準のプレイヤーキャラクターと非R15モデルの両方で機能します。

ユニークなケージUVマップを使用するモデルなど、レイヤーアクセサリーのカスタム実装は、マーケットプレイスにアップロードして公開することはできません。ただし、ゲーム内の資産(建物、ゲーム特有の衣服、プロップなど)用にカスタムケージメッシュを作成することはできます。

レイヤーアクセサリーをR15リギングアーマチュアに実装する場合でも、カスタムリグを使用する場合でも、アクセサリーとボディには次の要件を含める必要があります:

  • ターゲットモデル、通常はボディには、追加のモデルがラップされることを意図したメッシュにWrapTargetコンポーネントがあります。
  • レイヤリングモデル、通常は衣服やアクセサリーには、ターゲットモデルをラップすることを意図したメッシュにWrapLayerコンポーネントがあります。
  • ターゲットモデルの外側のケージと、レイヤリングモデルの内側と外側のケージは、マッチするUVマップを持っています。
    • ターゲットケージの対応する頂点は、レイヤーケージのそれらの頂点と同じUVを持つ必要があります。
  • ターゲットモデルがR15でない場合、またはHumanoidを含まない場合は、レイヤリングMeshPartWeldオブジェクトを追加する必要があります。
    • Weldは、レイヤリングMeshPartをモデルのPart階層にリンクするためにPart0Part1を設定する必要があります。たとえば、Part0はアクセサリーを指し、Part1は親Partを指します。
  • ターゲットモデルがR15であり、Humanoidを含む場合、このウェルドは自動的に作成されます。
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。