キャラクターの外見

*このコンテンツは、ベータ版の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は、Part0Part1を設定して、レイヤリングMeshPartをモデルのPart階層にリンクする必要があります。たとえば、Part0はアクセサリーを指し、Part1は親Partを指します。
  • ターゲットモデルがR15であり、Humanoidを含む場合、このウェルドは自動的に作成されます。
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。