前回は、ChatGPTなどのAIに相談しながらC#スクリプトを作成し、W・A・S・DキーでPlayerを移動できるようにしました。
今回は、Playerが移動するための地面を作成します。
さらに、Unityのゲーム制作で重要になる「Collider」と「Rigidbody」についても確認していきます。
現在のPlayerはゲーム画面上を移動できますが、まだ物理演算を利用した状態にはなっていません。
そこで今回は、地面に当たり判定を設定し、PlayerにRigidbodyを追加して、Playerが地面の上に存在できる基本的な状態を作ります。
ColliderやRigidbodyは、今後敵・壁・アイテム・障害物などを実装するときにも何度も使用する機能です。
前回のPlayer移動についてはこちらの記事で解説しています。
Unity 6でAIを使ってプレイヤーを動かす方法|ChatGPTでC#スクリプトを作成
地面となるPlaneを作成する
まずは、Playerが移動するための地面を作成します。
Unityにはさまざまな3D Objectが用意されています。
今回は平らな地面を簡単に作れる「Plane」を使用します。
Hierarchyから新しいPlaneを作成すると、Sceneビューに平らなオブジェクトが表示されます。
作成直後の名前は「Plane」になっていますが、今後分かりやすく管理するため、
Ground
に変更します。
HierarchyにPlayerとGroundが表示されていればOKです。
Groundの位置と大きさを設定する
次にGroundのTransformを調整します。
Playerは前回、
Position Y = 1
付近に配置しています。
そのため、Groundはその下に配置します。
今回はGroundのPositionを、
X = 0
Y = 0
Z = 0
にします。
さらに、Playerが動ける範囲を広くするためにScaleも変更します。
例えば、
X = 3
Y = 1
Z = 3
のようにすると、最初のテスト用として十分な広さになります。
PlaneのScaleを変更すると、Sceneビュー上でも地面が広がっていることを確認できます。

今後ゲームのマップを作るときは、地面をさらに広くしたり、複数のオブジェクトを組み合わせたりしてゲーム世界を作っていきます。
Colliderとは?
UnityでGameObject同士がぶつかったことを判定するために使用するのが「Collider」です。
見た目として3Dモデルが存在していても、Colliderがなければ他のGameObjectとの当たり判定が行われない場合があります。
例えば、
- Playerと地面
- Playerと壁
- Playerと敵
- Playerとアイテム
などの接触を判定するときにColliderを使用します。
Colliderにはいくつか種類があります。
代表的なものとして、
| Collider | 主な用途 |
|---|---|
| Box Collider | 箱型の当たり判定 |
| Sphere Collider | 球型の当たり判定 |
| Capsule Collider | カプセル型の当たり判定 |
| Mesh Collider | 3Dモデルの形状に近い当たり判定 |
などがあります。
形状が単純な場合は、Box ColliderやCapsule ColliderなどのシンプルなColliderを使用する方が処理も分かりやすくなります。
GroundのColliderを確認する
今回作成したPlaneには、最初からColliderが設定されています。
HierarchyでGroundを選択し、Inspectorを確認します。
Planeには通常、
Mesh Collider
が付いています。

これが地面の当たり判定になります。
そのため今回は、Groundに新しくColliderを追加する必要はありません。
Colliderが設定されていることで、物理演算を利用するPlayerが地面をすり抜けずに止まれるようになります。
PlayerのColliderを確認する
次にPlayerを確認します。
今回PlayerにはCubeを使用しているため、Cubeを作成した時点で
Box Collider
が設定されています。

HierarchyからPlayerを選択してInspectorを見ると、Box Colliderを確認できます。
Box Colliderは、Playerの周囲に箱型の当たり判定を作ります。
現在はPlayer自体も箱型なので、Box Colliderとの相性がよく、今回のテストには十分です。
将来的に人型のキャラクターモデルを使用する場合は、Capsule Colliderなど別のColliderを使うこともあります。
Rigidbodyとは?
Colliderだけでは、GameObjectが自動的に重力で落下するわけではありません。
Unityの物理演算によってGameObjectを動かすために使用するComponentが「Rigidbody」です。
Rigidbodyを追加すると、
- 重力
- 衝突
- 力を加えた移動
- 物理的な回転
などを利用できるようになります。
例えばPlayerにRigidbodyを追加し、Gravityを有効にすると、Playerは重力によって下方向へ落下します。
しかしGroundにはColliderがあるため、PlayerとGroundのColliderが衝突し、Playerは地面の上で止まります。
PlayerにRigidbodyを追加する
HierarchyでPlayerを選択し、InspectorからRigidbodyを追加します。
Rigidbodyを追加すると、Inspectorに新しい設定項目が表示されます。

今回特に確認するのは、
Use Gravity
です。
Use Gravityが有効になっていると、Playモード開始後にPlayerへ重力が適用されます。
今回は重力による落下を分かりやすく確認するため、テスト時のみPlayerのPosition Yを3に変更します。
Playerを地面より少し高い位置に配置してPlayすると、
Playerが下に落ちる
↓
Groundにぶつかる
↓
地面の上で止まる
という動作を確認できます。
これがUnityの基本的な物理演算の一例です。
Playerが倒れないようにRotationを固定する
Rigidbodyを追加すると、Playerは物理演算によって回転するようになります。
そのため、壁などにぶつかったときにPlayerが倒れてしまう場合があります。
今回のPlayerは縦長のCubeなので、ゲーム操作中に倒れないように回転を固定します。
RigidbodyのConstraintsから、
- Freeze Rotation X
- Freeze Rotation Z
を有効にします。

これで前後・左右に倒れにくくなります。
Y方向の回転については、今後Playerの向きを変更する可能性があるため、今回は固定しません。
ゲームの仕様によって必要なConstraintsは変わりますが、今回は初心者向けのシンプルなPlayer操作としてこの設定を使用します。
現在のPlayerMovementについて注意
前回作成したPlayerMovementでは、
transform.Translate()
を使ってPlayerを移動しています。
これはシンプルで初心者にも理解しやすい方法ですが、Rigidbodyを使った本格的な物理移動では、Transformを直接変更する方法よりもRigidbodyを使って移動させる方法が適しています。
そのため、このシリーズでは今後必要に応じてPlayerMovementも改善していきます。
今回はまず、
Colliderで当たり判定を作る
Rigidbodyで重力を有効にする
という基本的な仕組みを確認します。
AIを使う場合も、最初から完璧なコードを作るのではなく、ゲームの機能が増えるたびにコードを修正していくことがあります。
Playモードで地面との当たり判定を確認する
設定ができたら、Unity上部のPlayボタンを押します。
PlayerにRigidbodyのGravityが設定されているため、Playerは下方向へ落下します。
GroundのColliderに当たると、その位置で止まります。
PlayerがGroundをすり抜けず、地面の上で停止すれば成功です。

その状態でW・A・S・Dキーを押し、Playerが地面の上を移動できるかも確認します。

もしPlayerが倒れてしまう場合は、RigidbodyのFreeze Rotation XとZが設定されているか確認してください。
また、Playerが地面をすり抜ける場合は、PlayerとGroundのColliderが正しく設定されているか確認します。
動作確認が終わったらPlayモードを停止し、PlayerのPosition Yを1に戻しておきます。
ColliderとRigidbodyの違い
ここまで使ったColliderとRigidbodyは名前も役割も異なるため、整理しておきます。
| Component | 主な役割 |
|---|---|
| Collider | GameObjectの当たり判定を作る |
| Rigidbody | GameObjectに物理演算を適用する |
簡単に考えると、
Collider = ぶつかるための形
Rigidbody = 物理的に動くための機能
です。
例えばGroundは動かす必要がないためColliderだけで十分です。
一方、Playerは重力や物理演算を利用したいため、ColliderとRigidbodyの両方を使用します。
この違いを覚えておくと、今後壁や敵などを作成するときにも理解しやすくなります。
今回のまとめ
今回はUnity 6でPlayerが移動するためのGroundを作成し、ColliderとRigidbodyの基本について確認しました。
GroundにはColliderが設定されており、PlayerにはBox ColliderとRigidbodyを使用します。
RigidbodyのUse GravityによってPlayerに重力が適用され、GroundのColliderとの衝突によってPlayerが地面の上で止まります。
また、Playerが物理演算によって倒れないようにFreeze Rotationも設定しました。
ColliderとRigidbodyはUnityのゲーム制作で頻繁に使用するため、今回のようなシンプルなSceneで実際の動きを確認しておくと理解しやすくなります。
次回は壁とゲームエリアを作る
Playerが地面の上を移動できるようになったので、次はゲームエリアを少しずつ作っていきます。
次回はCubeを使って壁を配置し、Playerがゲームエリアの外へ出ないようにします。
Playerが壁にぶつかって止まることで、Colliderの仕組みもさらに分かりやすく確認できます。
さらに、複数のGameObjectを整理しながら簡単な3Dゲーム空間を作っていきます。

