1. はじめに
こんにちは!今回は 「Unityで2DアクションRPGを作る方法」 の第3回目です。
前回(パート2)では、フィールドの作成や攻撃モーションの設定 を行いました。これで、プレイヤーがマップ上を自由に移動し、攻撃モーションを再生できるようになりましたね!
しかし、ゲームとしての完成度を高めるには、プレイヤーのHPを表示するUI や カメラの追従機能 も必要になります。
そこで今回は、以下の3つの要素を追加して、ゲームの見た目や操作性を向上させていきます。
✅ HPバーの作成 → プレイヤーのHPを可視化するUIを追加
✅ カメラのプレイヤー追従 → プレイヤーの動きに合わせてカメラが動くように設定
✅ マップ外を映らないようにする → カメラの範囲を制限して、マップの外が表示されないようにする
これらを設定することで、プレイヤーの状態を分かりやすく表示し、スムーズなカメラワークを実現できます。
それでは、HPバーの作成から順番に進めていきましょう!
2. HPバーの作成
アクションRPGでは、プレイヤーの体力(HP)を視覚的に表示することが重要です。この記事では、UIスライダーを利用してHPバーを作成し、スクリプトでHPの変動を管理する方法 を解説します。
2.1 スライダーUIの作成
まず、HPバーとしてスライダー(Slider)を作成し、画面左上に固定しましょう。
1. HPバーの追加
- ヒエラルキー(Hierarchy)ウィンドウ で
UI
→Slider
を作成。 - 名前を
HPSlider
に変更。
2. HPバーの位置を調整
HPSlider
を選択 し、Inspector
の左上のマークをクリック。Alt
キーを押しながら左上 を選択すると、HPバーが画面の左上に固定される。

3. Canvas の設定
Canvas
を選択し、Inspector
でUI Scale Mode
をScale With Screen Size
に変更。Reference Resolution
のX: 1920, Y: 1080
に設定。- 画面サイズに応じてHPバーがスケール するようになります。

4. HPバーのデザイン変更
- スライダーのサイズを調整 して、適当な大きさに変更。
Background
のカラーを 赤 に設定。(背景)Fill
のImage
カラーを 緑 に設定。(HPゲージ)Fill Area
とFill
のRect Transform
のWidth
を0
に設定。Handle Slide Area
を削除。(不要なハンドルを非表示)HPSlider
のMax Value
を100
に設定。

これで、スライダーをHPバーとして利用できる状態 になりました。次は、スクリプトでHPの変動を管理しましょう。
アセットを使ってHPバーをさらに魅力的に!
シンプルなHPバーを作成しましたが、よりスタイリッシュなデザインにしたい場合は、以下のアセットを活用すると便利です!
- カスタマイズ可能なHPバーを多数収録!シンプルなUIでも、高品質なデザインを簡単に導入できます。
❤️ Pixel HUD – Health Hearts & Bars
- ピクセルアートスタイルのHPバー&ハートUIをセットで収録。レトロな2Dゲームに最適!
これらを使うと、デザイン性の高いHPバーを簡単に導入 できるので、ぜひチェックしてみてください!
3. HPバーのスクリプト作成
HPバーがあると、プレイヤーの現在の体力を視覚的に確認できるようになります。ここでは、GameManager を使ってHPバーを管理し、プレイヤーの体力が変化したときに自動でUIが更新されるようにスクリプトを作成していきます。
3.1 HPバーをスクリプトで制御
プレイヤーのHPに応じてHPバーを更新するには、GameManager スクリプト を作成します。
1. GameManager スクリプトを作成
Project
ウィンドウ を開く。Create
→C# Script
を選択し、名前をGameManager
にする。Hierarchy
でCreate Empty
を作成し、名前をGameManager
に変更。- 作成した
GameManager
オブジェクトにGameManager
スクリプトをアタッチ。
2. GameManager のコード
GameManager
は、プレイヤーのHPに応じてHPバーを更新する処理 を管理します。
using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
public static GameManager instance;
[SerializeField]
private Slider hpSlider;
[SerializeField]
private PlayerController player;
private void Awake()
{
if (instance == null)
{
instance = this;
}
}
public void UpdateHealthUI()
{
hpSlider.maxValue = player.MaxHealth;
hpSlider.value = player.CurrentHealth;
}
}
3. PlayerController の修正
プレイヤーの現在HPと最大HPを管理し、HPが変化するたびに GameManager
に通知します。
[System.NonSerialized]
public int CurrentHealth;
public int MaxHealth;
private void Start()
{
CurrentHealth = MaxHealth;
GameManager.instance.UpdateHealthUI();
}
4. Inspector で設定
PlayerController
のInspector
でMaxHealth
を設定(例: 100)。GameManager
にHPSlider
とPlayer
をドラッグ&ドロップ して関連付ける。
3.2 動作確認
プレイボタンを押して確認!
- ゲーム開始時に HPバーが満タン(100%) になっているかチェック。

この後、ダメージ処理を実装すると、HPが減少するアクションが再現 できます!
まとめ
✅ スライダーUIを利用してHPバーを作成
✅ Canvas の設定でスケーリング対応
✅ GameManager
で HP をスクリプト制御
✅ PlayerController
に HP を管理するコードを追加

これで、プレイヤーのHPをUIで可視化 できるようになりました!
4. カメラをプレイヤーに追従させる
2DアクションRPGでは、プレイヤーが動いたときにカメラがスムーズに追従する設定が重要です。Unityには Cinemachine という機能があり、これを使うと簡単にカメラ追従を実装できます。ここでは Cinemachine を導入して、カメラがプレイヤーを追いかけるように設定 する方法を解説します。
4.1 Cinemachine の導入
まずは、Cinemachine をプロジェクトに追加します。
- Unity のメニューから
Window
→Package Manager
を開きます。 Unity Registry
を選択し、検索バーにCinemachine
と入力。- 表示された
Cinemachine
パッケージを選択し、「Install」ボタンをクリック。 - インストールが完了すると、メニューに
Cinemachine
タブが追加されます。
これで、Cinemachine を使う準備ができました!
4.2 プレイヤー追従カメラの設定
次に、カメラがプレイヤーを追いかけるように設定します。
① CinemachineBrain を追加
Cinemachine を使うには、メインカメラ(Main Camera) に Cinemachine Brain
というコンポーネントを追加する必要があります。
- ヒエラルキー(Hierarchy)で
Main Camera
を選択。 - Inspector ウィンドウの
Add Component
からCinemachine Brain
を追加。
Cinemachine Brain
は、Cinemachine の仮想カメラ(VCam)を制御する役割を持っています。
② 仮想カメラ(Virtual Camera)を作成
次に、プレイヤーを追従するカメラを作成します。
- ヒエラルキー(Hierarchy)を右クリックし、
Cinemachine
→2D Camera
を選択。 CM vcam1
というオブジェクトが作成されます。CM vcam1
の Inspector を開き、Follow
の項目に プレイヤーオブジェクト(Player) をドラッグ&ドロップ。

これで、
CM vcam1
がプレイヤーを追従する設定になりました。
4.3 動作確認
- ゲームを再生して、プレイヤーが移動したときにカメラが追従するか確認!
- カメラがスムーズに追いかけるように調整が必要なら、
Damping(減衰)
の値を調整。- Damping を 0.5~1.0 に設定すると、ゆっくりとカメラが追従するようになる。

4.5 まとめ
- Cinemachine をインストール
- Main Camera に
Cinemachine Brain
を追加 - 仮想カメラ(VCam)を作成し、プレイヤーを
Follow
に設定 - Follow Offset や Damping を調整してカメラの挙動を最適化

これで プレイヤーが移動すると、カメラがスムーズに追従する ようになりました!
5. マップの外を映らないようにする
2DアクションRPGでは、カメラがマップの端まで行ったときに、マップ外の空白が見えてしまうことがあります。これを防ぐために、Cinemachine Confiner を使ってカメラの移動範囲を制限します。
この設定を行うことで、プレイヤーがマップの端に到達しても、余計な空間が映らず、自然なカメラワークを実現できます。
5.1 Confiner(境界)オブジェクトを作成する
まず、マップの端を囲むためのConfinerオブジェクトを作成します。
- ヒエラルキー(Hierarchy)ウィンドウで空のオブジェクトを作成
Hierarchy
を右クリック →Create Empty
を選択- 名前を Confiner に変更
- 位置のリセット
Inspector
でTransform
を(0,0,0)
にリセット- これにより、Confiner の基準位置をマップの中心に設定できます
5.2 Confiner用のレイヤーを作成
Confiner に専用のレイヤーを設定することで、他のオブジェクトと区別し、衝突判定の影響を受けないようにします。
- 新しいレイヤーを作成
Inspector
のLayer
をクリックAdd Layer
を選択Confiner
という新しいレイヤーを作成
- Confiner オブジェクトにレイヤーを適用
Inspector
のLayer
設定で、作成したConfiner
を選択
- Physics2Dのレイヤー設定を変更
Edit
→Project Settings
を開くPhysics2D
タブを選択Layer Collision Matrix
のConfiner
のチェックを 全てオフ にする- これにより、Confiner が物理的な衝突判定を持たず、カメラの範囲制限のためだけに機能するようになります

5.3 Confiner にコライダーを追加
次に、カメラの移動範囲を決めるために Polygon Collider 2D
を追加します。
- Confiner に
Polygon Collider 2D
を追加Inspector
のAdd Component
をクリックPolygon Collider 2D
を検索して追加
- マップの端に合わせてコライダーの形を調整
Edit Collider
をクリック- 緑の頂点をドラッグしてマップの境界線に沿うように調整
- カメラが移動できる範囲を完全に囲むように設定するのがポイント!

5.4 CinemachineConfiner の設定
最後に、Cinemachine を使ってカメラの移動範囲を Confiner
に制限します。
- Cinemachine の Confiner 設定を追加
CM vcam1
(Cinemachine Virtual Camera)を選択Inspector
のExtensions
セクションを開くAdd Extension
をクリックCinemachine Confiner
を追加
- Bounding Shape 2D に Confiner を設定
Bounding Shape 2D
の項目が表示されるので、Confiner
オブジェクトをドラッグ&ドロップして設定

5.5 設定の確認とテスト
すべての設定が完了したら、ゲームを実行してカメラの動作を確認します。
✅ チェックポイント
- プレイヤーがマップの端まで行っても、カメラが外の空間を映さないか?
- カメラがプレイヤーの動きに自然に追従するか?
- コライダーの形が適切に設定されているか?(カメラの移動範囲が意図した通りになっているか)

もしマップ外が映ってしまう場合は、Polygon Collider 2D
の形を再調整し、カメラの移動範囲を正しく設定してください
💡 より高度なカメラ制御を簡単に実装したい方へ!
「TopDown Engine」を使えば、Cinemachine の設定を個別に行わなくても、キャラクターの移動やカメラ追従を一括で管理できます。初心者でも簡単にトップダウンアクションRPGを作成できます!
5.6 まとめ
- Confiner オブジェクトを作成(マップの端を囲む)
- 新しいレイヤーを設定(衝突判定の影響をなくす)
- Polygon Collider 2D で移動範囲を設定
- Cinemachine Confiner を追加してカメラの移動制限を適用

これで、プレイヤーがマップの端に移動しても、カメラが不要なエリアを映さず、より自然なゲーム体験を提供できます!
6. まとめ
この記事では、2DアクションRPGのUIとカメラの設定 を行いました。以下のポイントを押さえながら、ゲームのプレイ体験を向上させる仕組みを実装しました。
① HPバーの作成
UI → Slider
を使ってHPバーを作成し、ゲーム画面の左上に固定しました。Canvas
のUI Scale Mode
をScale With Screen Size
に変更し、画面サイズに応じてUIが調整されるように設定しました。GameManager
を導入し、PlayerController
のMaxHealth
とCurrentHealth
の値に応じてHPバーが更新されるようにしました。
② カメラをプレイヤーに追従
Cinemachine
を導入し、Cinemachine 2D Camera
を作成しました。Cinemachine Brain
をMain Camera
に追加し、Follow
にPlayer
を設定することで、プレイヤーをカメラが追従するようになりました。
③ マップ外を映らないようにする
Polygon Collider 2D
をConfiner
オブジェクトに追加し、マップの端を囲むように設定しました。Cinemachine Confiner
をCinemachine 2D Camera
に追加し、Bounding Shape 2D
にConfiner
を設定することで、マップの外が映らないようになりました。
これで、ゲームのUIやカメラの動作が整い、よりプレイしやすい環境ができました!🎮✨

次回は 敵キャラの配置とダメージ処理の実装 を行い、プレイヤーが戦えるようにしていきます!お楽しみに!💥🔥
よくある質問(FAQ)
- QHPバーが表示されない
- A
GameManager
のHPSlider
とPlayer
が正しくInspector
で設定されているか確認してください。
- Qカメラがプレイヤーを追従しない
- A
CM vcam1
のFollow
にPlayer
が設定されているか、Cinemachine Brain
がMain Camera
に追加されているか確認してください。
- Qマップ外が映ってしまう
- A
Polygon Collider 2D
のサイズが適切か、Cinemachine Confiner
にConfiner
が設定されているか確認してください。