はじめに
こんにちは、Aetoriz です。普段は VRChat 向けに UnityEditor 拡張ツールやシェーダー、ギミックなどを販売・制作しています。
この記事は、VRChat ユーザーがアバターやワールドを改変・制作する際に知っておくと便利な Unity の基礎知識を、用語集としてまとめたものです。
「初学者の人が調べるのたいへんだろうなぁ」と思ったので、AIで初稿を作成し、私自身で内容を精査・修正しました。
便利な時代になりましたね。
また、参考になりそうな良質な記事へのリンクもいくつか追記してありますので、必要に応じて活用してみてください。
まずは VRChatのアバターでよく使う Unity の基本的な Component(コンポーネント) から解説しています。
今後、Asset(アセット)やVRCSDKなど、他の分野についても拡張していくかもしれません。
もし誤りや気になる点があれば、お気軽にコメント等でご指摘いただけると助かります。
初学者の方にもわかりやすく伝えることを優先しているため、厳密な定義とは少し異なる表現を含む部分もありますが、全体としては大きな誤解を招く内容ではないためそのままにしているところが一部あります。
🧸 GameObject(ゲームオブジェクト)とは?
Unityでアバターやワールドを作るとき、ほぼすべての「もの(オブジェクト)」は GameObject という土台の上に作られています。GameObject自体はコンポーネントではありません。
詳細解説
🎮 ざっくり言うと?
Unityの中で「見えるもの」も「見えないもの」も、まずはこの『GameObject』というベースの入れ物から始まります。
GameObject は、アバターの体、家具、光、音、カメラなど、あらゆるものを作るための「出発点」です。
📦 GameObjectは「何かの機能」を持っているわけではない
GameObject 自体は、単なる「入れ物」や「名前だけの空の箱」のようなものです。
中に何を入れるか(=パーツや機能を追加するか) によって、初めて意味を持ちます。
たとえば:
中に入れたパーツ | どうなる? |
---|---|
形(Mesh) | 画面に見えるようになる |
当たり判定(Collider) | 他のものとぶつかるようになる |
音を鳴らす機能 | 音が聞こえるようになる |
ライト | 光を発するようになる |
スクリプト | 動きや仕組みが加わる |
🌳 GameObject は「入れ子構造」が作れる
GameObject は、他の GameObject を中に入れることができます。
これにより「体の中に腕があり、腕の中に手がある」といったような構造を作ることができます。
これはアバターやワールドの構造を分かりやすく保つのにとても便利です。
⚠️ 初心者がつまづきやすいポイント
- GameObject は「箱」でしかないので、何かをしようと思ったら中にパーツを入れる必要があります
- どの GameObject が何をしているか分かりにくくなることがあるので、名前や階層を整理するクセをつけておくと便利です
- 表示されない・動かないときは、中身(パーツ)が足りているか確認してみましょう
🧠 まとめ
- GameObject は Unity の「すべてのもの」のベースになる存在
- 自分自身では何もしないが、パーツを入れることで役割が決まる
- 親子構造を作れるので、複雑なものも整理しながら作れる
🧩 Component(コンポーネント)とは?
Unityでは、オブジェクト(GameObject)に「機能」を追加するための部品のことを Component(コンポーネント) と呼びます。
たとえば「見た目を持たせたい」「動きをつけたい」「音を鳴らしたい」といった時は、それぞれに合ったComponentを追加していきます。
詳細解説
🎮 たとえばこんなComponentがあります:
- Transform:位置や回転、大きさを設定する(必ず付いてる)
- Mesh Renderer:オブジェクトを見えるようにする
- Collider:当たり判定を付ける
- Audio Source:音を鳴らす
- Animator:アニメーションを動かす
🧠 イメージしやすく言うと…
GameObject = 本体(何もしてない箱)
Component = パーツ(機能を付ける)
✅ ポイント
- GameObjectに複数のComponentを組み合わせることで、さまざまな機能を持たせることができます。
- Unityの基本は「GameObjectに必要なComponentを追加していく」ことから始まります。
📘 Transform(トランスフォーム)
- 使い道:位置、回転、大きさの調整
- 初心者向け解説:オブジェクトが「どこにあるか」「どっちを向いているか」「どれくらいの大きさか」を決める
- よく使うシーン:アクセサリーの配置、アバターのポーズ調整、ワールドの家具やギミック配置
詳細解説
🧭 Transform(トランスフォーム)
📌 これは何?
Transformは、Unityで使うすべてのオブジェクトに必ず付いているコンポーネントです。
「位置」「回転」「大きさ」を管理する、オブジェクトの“存在そのもの”を決める超重要パーツ。
🔧 含まれている情報
項目 | 説明 |
---|---|
Position(位置) | オブジェクトが空間のどこにあるか(X, Y, Z) |
Rotation(回転) | オブジェクトがどの向きに回っているか(X, Y, Z軸まわりの角度) |
Scale(拡大縮小) | オブジェクトの大きさ(1.0が標準、2.0で2倍など) |
🧱 親子構造とローカル座標
Transformは 階層構造(親子関係) を持つことができます。
- 子オブジェクトは、親に対しての相対的な位置・回転・スケールを持ちます。
- 例えば「カメラをアバターの手に固定」したいときは、カメラを手のTransformの子にすればOK。
🌍 ローカル座標とワールド座標
種類 | 説明 |
---|---|
ローカル座標 | 親に対しての位置・回転・スケール(localPosition など) |
ワールド座標 | シーン全体から見た絶対位置(position など) |
インスペクターでは基本的にローカル座標が表示されます。
🧪 よく使うシーン(VRChat)
- アバターの骨格調整(各ボーンの位置や回転)
- ワールド内ギミックの配置(スイッチやドアなど)
- カメラ・ミラーの設置(視点や反射の向き)
⚠️ 注意ポイント
-
回転(Rotation)は直感とズレることも
→ Unity内部ではQuaternionという仕組みを使っていて、複雑な回転になると混乱しやすいです。 -
親のスケールは子にも影響
→ たとえば親のスケールを0.5
にすると、子オブジェクトも半分の大きさになります。 -
スケールを0にすると非表示になる
→ 表示されなくなったときはここをチェック!
🛠 参考になる記事
VRChat初心者に贈る、Unityの親子関係・階層について
【Unityの基本】Transformを徹底解説「移動」や「回転」だけじゃない
Transform:Unityマニュアル
Transform:Unityスクリプトリファレンス
📘 Collider(コライダー)
- 使い道:当たり判定、物理的な衝突やトリガーイベント
- 初心者向け解説:見えない“当たり判定の枠”。オブジェクトにぶつかる・通る・検知するための仕組み
- よく使うシーン:壁や床の判定、アバターのヒットボックス、スイッチやトリガーの検出
詳細解説
🧱 Collider(コライダー)
📌 これは何?
Collider(コライダー)は、オブジェクトに当たり判定を付けるためのコンポーネントです。
ゲーム内で「ここにぶつかった」「ここを通過した」を検出するための“見えない壁”のようなもの。
🧩 主なColliderの種類
コンポーネント名 | 特徴 |
---|---|
Box Collider | 四角い形。最も基本的で軽量 |
Sphere Collider | 球状。丸い物や小さな判定に便利 |
Capsule Collider | カプセル型。アバターの体に向いている |
Mesh Collider | メッシュの形に沿った複雑な判定(処理が重い) |
🔁 ColliderとTriggerの違い
設定 | 動き | 使い道 |
---|---|---|
isTrigger = false(デフォルト) | 実際にぶつかる(物理挙動) | 壁や床などの障害物 |
isTrigger = true | 通り抜けられるけど「当たった」が検出できる | スイッチや検知ゾーンなど |
⚙️ Rigidbodyと一緒に使う
-
動かすならRigidbodyも必要
Rigidbody(リジッドボディ)を使うと、物理シミュレーション(重力、加速、衝突反応など)を加えることができます。
🧪 よく使うシーン(VRChat)
- アバターの当たり判定(ヒットボックス)
- ワールド内の壁・床・障害物の判定
- プレイヤーがトリガーゾーンに入ったかの判定
- ギミックの起動(例:入ったら開くドア)
⚠️ 注意ポイント
-
Colliderだけでは動かない
→ 自動で動くためにはRigidbody
も必要 -
Mesh Colliderは重い
→ 複雑な形状は処理負荷が高いため、なるべくBoxやCapsuleを使う -
2D用と3D用で別物
→BoxCollider
とBoxCollider2D
など、次元が違うと使えない
🛠 参考になる記事
【当たり判定】UnityのColliderの使い方
Unityの基本的なColliderの形状完全に理解した
Collider:Unityマニュアル
Collider:Unityスクリプトリファレンス
📘 MeshFilter(メッシュフィルター)
- 使い道:3Dモデルをオブジェクトに適用、メッシュの表示
- 初心者向け解説:オブジェクトに表示される3Dモデルを設定するコンポーネント
- よく使うシーン:キャラクターやオブジェクトの3Dモデル表示、環境の作成
詳細解説
🧱 MeshFilter(メッシュフィルター)
📌 これは何?
MeshFilter(メッシュフィルター) は、オブジェクトに表示するための3Dメッシュを設定するコンポーネントです。
3Dオブジェクトがどの形状を持つかを決める。メッシュデータ(頂点やポリゴン情報)を格納し、描画のために使用されます。
🔍 どんな情報を持つのか?
MeshFilter には、オブジェクトのメッシュを指定するMeshオブジェクトを設定します。このメッシュは通常、3Dモデリングソフトで作成したものが使われます。
項目 | 説明 |
---|---|
Mesh | オブジェクトに適用する3Dモデル(メッシュ) |
SharedMesh | メッシュのインスタンスを共有する場合に使われる(編集不可) |
🧩 メッシュとRendererの違い
- MeshFilter:実際のメッシュ(3Dモデル)をオブジェクトに設定する。
- MeshRenderer:そのメッシュをどのように描画するか(シェーダー、マテリアル、ライトの影響など)を設定する。
両方がセットで使われて初めて3Dオブジェクトが描画されます。
🧪 よく使うシーン(VRChat)
- キャラクターの3Dモデル設定(アバター)
- ワールド内オブジェクトのメッシュ表示(建物、家具など)
- 特殊な形状のエフェクトやギミック
⚠️ 注意ポイント
-
メッシュの編集はMeshFilterではできない
→ メッシュデータを変更するには、エディターやスクリプトを使って別途操作が必要 -
メッシュの描画はMeshFilter単体ではできない
→ メッシュを描画するには、MeshRendererコンポーネントが必要 -
メッシュを動かしたり回転させたりするときはTransformを使う
→ メッシュ自体の位置や回転はTransformコンポーネントで設定します。
🛠 参考になる記事
【補足】
💡 Rendererってなに?
🖼️ Rendererってなに?
Renderer(レンダラー) は、Unityで「そのオブジェクトをどう見せるか」を決めるための基本的な仕組みです。
オブジェクトの“見た目”を担当する係。
色、質感、光の当たり方、表示・非表示、影などを決めます。
🔍 どんなことができるの?
Rendererを使うと、次のようなことができます:
- 🎨 マテリアルの指定 → 色や質感を変える(メタリック、マット、透明など)
- 💡 ライティングの影響 → 光を反射させたり、影を落としたり
- 👻 表示・非表示 → 必要なときだけ見せる(イベントで出現とか)
🧩 よくある種類(Rendererの派生)
名前 | 主な用途 |
---|---|
MeshRenderer | 通常の3Dモデル表示に使う |
SkinnedMeshRenderer | アバターや動くパーツ(ボーンに合わせて動く) |
ParticleSystemRenderer | パーティクル(粒)に使う専用の表示方法 |
🧪 VRChatでの例
- アバターの体や顔など、ボーンの影響をうけたりBlendShapeが存在するものは SkinnedMeshRenderer
- 小物やアクセサリーなどボーンの影響を受けないものは MeshRenderer
- シェーダーで光らせて雰囲気を出したりもできる
- Unity側で非表示設定して、アニメーションやエモートで切り替える
⚠️ よくある誤解・注意
-
🧱 Rendererは形を持たない!
→ 形は「MeshFilter」や「SkinnedMeshRenderer」にある。Rendererは“見せ方”だけ。 -
🎭 「見えてる = 当たり判定あり」ではない
→ 物理的な当たり判定は「Collider」が担当。Rendererは見た目だけ。 -
💥 非表示にしても存在はしている
→ オブジェクトの位置やスクリプトは動いたまま。視覚的に見えないだけ。
✨ 補足:マテリアルって何?
Rendererとセットで使う「マテリアル」は、見た目の“表面の素材”を決める設定です。
例えば:
- プラスチックっぽい質感
- ガラスのような透明感
- 発光するホログラムっぽい表現
こういう見た目は全部、マテリアルとシェーダーの組み合わせでできています!
📘 MeshRenderer(メッシュレンダラー)
- 使い道:メッシュにマテリアルを貼って、実際に見えるようにする
- 初心者向け解説:見た目(色・質感・光の当たり方)を決めるコンポーネント
- よく使うシーン:アバターや小物の見た目設定、マテリアル変更、点滅や消えるギミック
詳細解説
🎨 MeshRenderer(メッシュレンダラー)
📌 これは何?
MeshRendererは、メッシュにマテリアル(質感や色)を適用して見えるようにするコンポーネントです。
「MeshFilter」が形を決めるのに対して、「MeshRenderer」はその形をどう見せるかを担当します。
🔍 どんな情報を持つのか?
項目 | 説明 |
---|---|
Materials | 表示に使うマテリアルの一覧(色や質感) |
Light Probes / Reflection Probes | 照明・反射の補間設定(ワールドでの光の当たり方) |
Shadow Casting / Receiving | 影を落とすか・受け取るかの設定 |
Enabled | 表示のオン・オフ(非表示にすることも可能) |
🧩 よくある組み合わせ
-
MeshFilter + MeshRenderer
→ 3Dモデル(形)+表示(色・質感)で見た目が完成!
🧪 よく使うシーン(VRChat)
- アバターのパーツに異なるマテリアルを設定してカスタマイズ
- エモート時に一部だけ消す/光らせる
- ワールド内でギミックの表示・非表示を制御(例:スイッチで物体が出る)
⚠️ 注意ポイント
-
見た目だけで物理判定はない
→ Colliderと組み合わせて当たり判定を追加する必要があります。 -
マテリアルの設定で重くなることも
→ 特に透明素材や発光、リアルな質感を使うと処理が重くなるので注意。 -
マテリアルの共有に注意
→sharedMaterial
を変更すると、同じマテリアルを使っている他のオブジェクトにも影響が出ます。
🛠 参考になる記事
MeshRenderer:Unityマニュアル
MeshRenderer:Unityスクリプトリファレンス
Renderer:Unityスクリプトリファレンス
📘 SkinnedMeshRenderer(スキンドメッシュレンダラー)
- 使い道:ボーンに合わせて動く3Dモデルを表示する
- 初心者向け解説:体や服など、骨(ボーン)に合わせて変形する見た目を担当するコンポーネント
- よく使うシーン:アバター本体や服、髪などの見た目表示に必須!
詳細解説
👤 SkinnedMeshRenderer(スキンドメッシュレンダラー)
📌 これは何?
SkinnedMeshRenderer は、骨(ボーン)に合わせて形が動く3Dモデルの見た目を表示するためのコンポーネントです。
アバターの体、服、髪、顔、すべてに使われている
モデルが「アニメーションで動く」ための見た目の仕組み!
🔍 どんなときに使う?
- 人型のアバターや動物など、「骨で動く」モデルに必須
- VRChatアバターの全身(体・服・髪)
- 表情や口パクなどの ブレンドシェイプ(シェイプキー) にも対応
🧩 含まれる主な情報
項目 | 説明 |
---|---|
Mesh | 見た目の形(Skinnedなモデル) |
Materials | 表示する質感・色 |
Bones | モデルを動かす骨の一覧(Transform) |
Root Bone | アニメーションにおける一番親となるボーン(全体の基準) |
BlendShapes | 表情やモーフなどの形変化 |
🧪 VRChatでの使い道
- アバターの見た目:体・髪・服
- 表情や目の開閉などのモーフ(顔の動き)
- 衣装のアニメーションや布の動き
⚠️ 注意ポイント
-
MeshRendererとは違う!
→ 通常のMeshRendererではボーンに連動して動かせません -
正しく動かすには「ボーン構造」と「スキニング」が必要
→ BlenderやUnity上で正しく設定する必要があります -
マテリアルやブレンドシェイプの設定ミスに注意
→ 表情が出なかったり、テクスチャが変になることがあります
💡 よくある用語補足
-
スキニング(Skinning)
→ モデルをボーンに“くっつける”処理。どのボーンがどの部分を動かすかを決める。 -
ブレンドシェイプ(BlendShape)
→ モデルの形を変化させる方法。表情・口パク・顔の変形などに使われる。
🛠 参考になる記事
アバター改変:ブレンドシェイプキーどこにある問題と使い方
【Unity】3Dモデルのスキニングを理解する
SkinnedMeshRenderer:Unityマニュアル
SkinnedMeshRenderer:Unityスクリプトリファレンス
Renderer:Unityスクリプトリファレンス
📘 Animator(アニメーター)
- 種類:Unity Component(アニメーション制御)
- 使い道:アニメーションの切り替え・制御
- 初心者向け解説:歩く・しゃがむ・表情変化など「動き」の切り替えを管理する
- よく使うシーン:アバターの表情制御、ワールドギミックの動き制御、エモート切り替え
詳細解説
🎞️ Animator(アニメーター)
📌 これは何?
Animator は、Unityで「アニメーションを管理・制御するためのコンポーネント」です。
複数の動き(Animation)を切り替えたり、条件に応じて制御したりできる「動きの司令塔」!
🧠 基本構成
Animator コンポーネントは、以下の2つとセットで動きます:
名前 | 説明 |
---|---|
Animator Controller | アニメーションの設定ファイル(グラフ状に切り替え管理) |
Animation Clip | 実際に再生される動きの中身(1つの動作) |
🧭 主な機能
- 🔄 アニメーションの自動切り替え
- 🧩 条件(パラメータ) によって分岐可能
- 🗂️ 状態(ステート)ごとの制御(Idle、Walk、Jumpなど)
- 🎛️ ブレンド(中間の動き)も可能
🧪 VRChatでの使い道
- アバターの表情切り替え
- エモート再生(踊り・ジェスチャーなど)
- 特定アイテムの表示・非表示制御
- ワールドでのスイッチ連動ギミック(扉、乗り物など)
🧰 よく使うパラメータタイプ
種類 | 説明 |
---|---|
Bool | ON/OFF(例:ボタンを押したか) |
Float | 数値(例:スピード) |
Int | 整数(例:状態の番号) |
Trigger | 1回だけ発火するトリガー(例:ジャンプボタン) |
⚠️ 注意ポイント
-
Animator Controllerが無いと動かない!
→ Animator コンポーネントにアサインが必要です -
BlendTreeやLayerの仕組みは慣れが必要
→ 表情を滑らかに変える、動きを重ねる…などは少し上級 -
VRChat向けは特殊なAnimator Layer構成がある
→ Base、Additive、Gesture、FX など用途別にレイヤーが分かれている(例:VRChat SDK参照)
🛠 参考になる記事
[VRChat]初学者向けAnimatorの使い方
自作アバターで陥るアニメーター周りのあれこれ 初心者用
Animator Parameters:VRChat Creation
Animator:Unityマニュアル
Animator:Unityスクリプトリファレンス
📘 Constraint(コンストレイント)
- 種類:Unity Component(動きを連動させる)
- 使い道:他のオブジェクトの動きに追従させたいときに使う
- 初心者向け解説:特定のオブジェクトに「位置」や「回転」を合わせて動かすしくみ
- よく使うシーン:武器を手にくっつける、カメラを常に見るようにする、目線や看板の方向制御など
詳細解説
🧲 Constraint(コンストレイント)
📌 これは何?
Constraint は「あるオブジェクトの動きを、別のオブジェクトに合わせる」ためのコンポーネントです。
親子関係にせず、特定の動きだけ(位置・回転など)を追従させることができます。
🧩 主な種類と使いどころ
Constraintの種類 | 説明 |
---|---|
Parent Constraint | 位置と回転を両方追従させる |
Position Constraint | 位置だけ追従する |
Rotation Constraint | 回転だけ追従する |
Scale Constraint | 大きさだけ追従する(あまり使われない) |
LookAt Constraint | 指定したオブジェクトを常に見るように向きを変える |
Aim Constraint | ある方向に照準を合わせるように回転する |
🎛 使い方の例(VRChat)
- 剣などのアクセサリを、手の動きに合わせたい
- アバターの目線を、プレイヤーのカメラに合わせたい
- ミラーやオブジェクトをプレイヤーの方に向けておきたい
⚠️ 注意ポイント
-
ターゲット(追従先)を指定しないと動かない
→ 対象のTransformを「Source」として設定する必要があります。 -
親子にしなくても動きだけ連動できる
→ スケールの影響を受けたくないときなどに便利です。 -
Weight(ウェイト) の調整で、どれくらい影響させるかを調整可能
→ 例えば「少しだけ向きを合わせる」なども可能です。 -
VRChatでは、VRC独自のConstraintを使用することが推奨されています。
→ アバター読み込み時に自動で変換されてしまうため、意図しない動きになる可能性があります。
🧠 補足Tips
Constraintは「非破壊的に追従」をつけられるのが魅力です。
Unityの親子構造ではできない柔軟な動きの制御ができるので、表情制御や視線制御、オブジェクト配置など、VRChatでも便利に使えます。
VRC