3Dアクションゲームを作りたい。
でも、2Dと何がどう違うのか分からない。
特に多くの初心者が悩むのが、3D空間でのキャラクター操作や、カメラ視点の扱いです。
実は、3Dアクションも基本を押さえれば、考え方は2Dゲームと大きく変わりません。
この記事では、Unity 2022 LTSを想定し、3Dアクションゲームの作り方をキャラ操作・視点・当たり判定を中心に、実践的に解説します。
✨ この記事でわかること
- 3Dアクションゲームに必要な基本要素
- キャラクター操作の実装方法
- TPS/FPSカメラの設定
- 3D当たり判定の考え方

Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
3Dアクションゲームに必要な基本要素

3Dアクションゲームを作る上で、最低限必要な要素は次の5つです。
- キャラクターの移動と操作(CharacterControllerまたはRigidbody)
- カメラの視点設定(TPS/FPS)
- 当たり判定(ColliderとRaycast)
- 敵AI(基本的な行動パターン)
- ステージ構造(地形、障害物)
2Dと大きく違うのは、カメラの扱いです。
3Dでは、プレイヤーの後ろから見るTPS(Third Person Shooter)や、プレイヤーの視点で見るFPS(First Person Shooter)を選べます。
まずは、TPSから始めるのがおすすめです。
3Dカメラ追従の作り方|TPS・FPSカメラの基礎とCinemachine活用
CharacterControllerを使った移動の実装

3Dアクションゲーム制作では、キャラクターの移動実装で最初につまずく人がとても多いです。
特に初心者の場合、「コードは合っているのに、思った通りに動かない」という状況になりがちです。
その原因は、スクリプトではなく、CharacterControllerの設定にあることがほとんどです。

まずは、移動処理を書く前に、Inspectorで行う基本設定を確認しておきましょう。
CharacterControllerの基本設定(事前準備)
CharacterControllerを使って移動を実装する前に、Inspectorでの基本設定を行っておくことが重要です。
この設定が適切でないと、キャラクターが地面に埋まったり、段差を正しく乗り越えられなかったりします。
まずは、PlayerオブジェクトにCharacterControllerコンポーネントを追加してください。
設定で主に調整するのは、次の項目です。
- Height:キャラクターの身長
- Center:当たり判定の中心位置
- Radius:体の太さ
人型キャラクターの場合、以下の値を目安にすると扱いやすくなります。
- Height:1.8〜2.0
- Center Y:Heightの半分程度
- Radius:0.3〜0.5
設定後は、
Sceneビューで緑色のカプセルがキャラクターの体に合っているか必ず確認してください。
この設定ができていれば、CharacterControllerは地面との衝突や段差処理を自動で行ってくれます。
移動とジャンプの実装
基本設定ができたら、スクリプトを使ってキャラクターの移動処理を実装します。
3Dアクションでは、RigidbodyよりもCharacterControllerを使うほうが、操作感を安定させやすいのが特徴です。
以下のスクリプトで、前後左右の移動とジャンプを実装できます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
using UnityEngine; public class PlayerController3D : MonoBehaviour { [SerializeField] private float moveSpeed = 5f; [SerializeField] private float jumpHeight = 2f; private CharacterController controller; private Vector3 velocity; private bool isGrounded; void Start() { controller = GetComponent<CharacterController>(); } void Update() { isGrounded = controller.isGrounded; if (isGrounded && velocity.y < 0) { velocity.y = 0f; } // 移動入力 float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); Vector3 move = transform.right * horizontal + transform.forward * vertical; controller.Move(move * moveSpeed * Time.deltaTime); // ジャンプ if (Input.GetButtonDown("Jump") && isGrounded) { velocity.y += Mathf.Sqrt(jumpHeight * -3.0f * Physics.gravity.y); } // 重力 velocity.y += Physics.gravity.y * Time.deltaTime; controller.Move(velocity * Time.deltaTime); } } |
このコードで、WASDキーで移動、スペースキーでジャンプができます。
CharacterControllerは、物理演算を使わずに衝突判定を行うため、3Dアクションでも安定した操作感を作りやすくなります。
また、isGrounded を使えば、接地判定も簡単に取得できます。
TPSカメラの実装方法

3Dアクションゲームでは、カメラの実装で一気に難しく感じる人が多いです。
特に初心者の場合、
- カメラは回るけど、キャラクターの向きがおかしい
- 移動方向と視点が一致しない
- マウス操作が直感的でない
といった問題にぶつかりやすくなります。
これは、「カメラの回転」と「キャラクターの向き」の役割を整理できていないことが原因です。

まずは、TPSカメラの考え方を押さえてから、実装に進みましょう。
TPSカメラの基本的な考え方
TPSカメラは、キャラクターの後ろから全体を見渡す視点です。
このとき重要なのは、カメラ自体が自由に動くのではなく、プレイヤーを中心に回り込むように動かすという考え方です。
基本的な役割は次のように分かれます。
- カメラ:視点の回転・距離・高さを管理する
- キャラクター:移動方向と向きを決定する
TPSでは、カメラの回転に合わせて、キャラクターの向きや移動方向を調整することで、自然な操作感を作ります。
この役割分担を意識するだけでも、実装時の混乱を大きく減らせます。
TPSカメラの基本実装
TPSカメラでは、マウス入力を使ってカメラを回転させ、常にプレイヤーを追従させます。
以下のスクリプトで、基本的なTPSカメラを実装できます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
using UnityEngine; public class TPSCamera : MonoBehaviour { [SerializeField] private Transform target; [SerializeField] private float distance = 5f; [SerializeField] private float height = 2f; [SerializeField] private float rotationSpeed = 2f; private float currentRotationX; private float currentRotationY; void LateUpdate() { // マウス入力でカメラを回転 currentRotationX += Input.GetAxis("Mouse X") * rotationSpeed; currentRotationY -= Input.GetAxis("Mouse Y") * rotationSpeed; currentRotationY = Mathf.Clamp(currentRotationY, -35f, 60f); // カメラの位置を計算 Quaternion rotation = Quaternion.Euler(currentRotationY, currentRotationX, 0); Vector3 direction = rotation * Vector3.back; Vector3 position = target.position + direction * distance + Vector3.up * height; transform.position = position; transform.LookAt(target.position + Vector3.up * height); } } |
このコードでは、マウス操作でカメラを回転させながら、常にプレイヤーを中心にした視点を保ちます。
- distance:カメラとプレイヤーの距離
- height:カメラの高さ
を調整することで、見下ろし気味・近距離など、好みの視点に変更できます。
Unityで作る3Dアクション入門|TPS操作・カメラ制御・敵AIの基本
3D当たり判定の考え方

3D当たり判定には、主に2つの方法があります。
- Colliderを使った衝突判定
- Raycastを使った距離判定
Colliderは、オブジェクト同士の衝突を検知します。
Raycastは、特定の方向に線を飛ばして、何かに当たったかを判定します。
用途に応じて使い分けます。
Colliderを使った当たり判定
敵との衝突判定などに使います。
|
1 2 3 4 5 6 7 8 |
void OnTriggerEnter(Collider other) { if (other.CompareTag("Enemy")) { // 敵との衝突処理 } } |
このコードで、敵と衝突した時に処理を実行できます。
Raycastを使った当たり判定
攻撃判定や、地面との距離測定などに使います。
|
1 2 3 4 5 6 7 8 9 10 |
void Update() { RaycastHit hit; if (Physics.Raycast(transform.position, Vector3.down, out hit, 2f)) { // 地面との距離が2f以内 Debug.Log("地面との距離: " + hit.distance); } } |
このコードで、プレイヤーの真下に何かがあるかを判定できます。
⚠️ 当たり判定の注意点
- Colliderのサイズを適切に設定する
- Raycastの距離を調整する
- レイヤーを正しく設定する
敵AIの基本実装

3Dアクションの敵AIは、NavMeshを使うと効率的に実装できます。
NavMeshは、敵が移動できる経路を自動で計算してくれます。
以下のコードで、プレイヤーを追尾する敵が作れます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using UnityEngine; using UnityEngine.AI; public class EnemyAI3D : MonoBehaviour { [SerializeField] private Transform target; [SerializeField] private float attackRange = 2f; private NavMeshAgent agent; void Start() { agent = GetComponent<NavMeshAgent>(); } void Update() { float distance = Vector3.Distance(transform.position, target.position); if (distance < attackRange) { // 攻撃範囲内 agent.isStopped = true; // 攻撃処理 } else { // プレイヤーを追尾 agent.isStopped = false; agent.SetDestination(target.position); } } } |
このコードで、敵がプレイヤーを追尾します。
attackRangeの値を変えると、攻撃範囲が調整できます。
NavMeshを使うには、ステージにNavMeshを設定する必要があります。
Window → AI → Navigationで、NavMeshを設定できます。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
敵AIの基本ロジック|追尾・攻撃・退避の3パターンを解説
実践的な3Dアクション制作を学ぶには

ここまで、3Dアクションゲームの基本要素を解説してきました。
ただし、実際のゲーム制作では、さらに多くの要素が必要になります。
アニメーション、エフェクト、UI、サウンドなど、全体を体系的に学ぶには、専門の講座が効率的です。
Unity入門の森では、3Dアクションゲームの作り方を、基礎から完成まで丁寧に解説しています。
コードの意味から、なぜその実装方法を選ぶのかまで、しっかり理解できる内容になっています。
3Dアクション制作に特化した講座なら、効率的にスキルアップできます。
ゲーム制作でスキルを上げたい方は、ぜひチェックしてみてください。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
まとめ

3Dアクションゲームの作り方を解説しました。
要点のまとめ
- CharacterControllerを使うと、操作感が良くなる
- TPSカメラは、マウス入力で回転させる
- 当たり判定は、ColliderとRaycastを使い分ける
- NavMeshを使うと、敵AIの実装が楽になる
基本を押さえれば、あとは応用していくだけです。
まずは、ここで紹介したコードを実際に動かしてみてください。
動かしながら理解を深めていくのが、上達への近道です。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる



コメント