敵に触っても何も起きない——攻撃ボタンを押しても反応がない。
移動とジャンプが動いたあと、多くの方が「戦わせたい」と感じるのが自然な流れです。
しかし攻撃は、当たり判定・ダメージ処理・クールダウンの3つが揃わないと、ゲームとして成立しません。
この記事では、Unityで攻撃の最小ループを、近接と弾の2パターンで整理します。
081のHPゲージと接続すれば、ダメージが見える戦闘が完成します。
- 攻撃ボタンを押しても当たり判定が発生しない
- 1回の攻撃で何度もダメージが入ってしまう
- 連打で攻撃が止まらず、ゲームバランスが崩れる
✨ この記事でわかること
- 攻撃ヒットボックスの作り方
- OnTriggerEnter2Dでのダメージ処理
- クールダウンで連打を防ぐ方法
- 近接攻撃と弾(Projectile)の違い
- 081HPゲージとの接続イメージ
- 初心者でも理解できる解説
\プログラミング未経験でも大丈夫!まずは1本作り切ろう/
初心者が最初に選ぶならコレ
Unity ノンフィールドRPG
+スレスパ風JRPG講座
Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。
憧れのアクションゲームに挑戦
Unity 2Dアクションゲーム
の作り方講座(ロックマン風)
初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。
3Dゲーム開発の入口はここ
ゼルダ風3Dアクションゲーム
の作り方講座
「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。
攻撃の最小ループ
戦闘の核は、次の流れです。
- プレイヤーが攻撃入力をする
- ヒットボックス(当たり判定)が有効になる
- 敵と接触したらダメージを与える
- クールダウン中は次の攻撃を受け付けない
081でHPゲージを実装すれば、ダメージが数値とUIに反映されます。
080では「ダメージを与える処理」までを固めます。
| 要素 | 役割 | 実装の要点 |
|---|---|---|
| ヒットボックス | 攻撃が当たる範囲 | 子オブジェクト + Trigger Collider2D。 攻撃時だけ有効化 |
| ダメージ処理 | 敵のHPを減らす | 敵側にTakeDamage(int)メソッドを用意 |
| クールダウン | 連打防止 | 攻撃後0.3〜0.5秒は次の攻撃をブロック |
近接攻撃の実装
プレイヤーの子にHitbox(空オブジェクト + BoxCollider2D isTrigger=true)を置き、攻撃ボタンで短時間だけ有効にします。
using UnityEngine;
public class MeleeAttack2D : MonoBehaviour
{
public GameObject hitbox;
public int damage = 10;
public float attackCooldown = 0.4f;
private float lastAttackTime = -999f;
void Update
{
if (Input.GetButtonDown("Fire1") && Time.time >= lastAttackTime + attackCooldown)
{
lastAttackTime = Time.time;
hitbox.SetActive(true);
Invoke(nameof(DisableHitbox), 0.15f);
}
}
void DisableHitbox => hitbox.SetActive(false);
}
Hitbox側のスクリプトでOnTriggerEnter2Dを受け取り、敵のTakeDamageを呼び出します。
void OnTriggerEnter2D(Collider2D other)
{
var enemy = other.GetComponent<EnemyHealth>;
if (enemy != null) enemy.TakeDamage(damage);
}
同じ敵に1回の攻撃で複数回ダメージが入らないよう、攻撃ごとにヒット済みリストを持つか、ヒットボックスを0.1〜0.2秒だけ有効にする方式が定番です。

最初はアニメなしで、Hitboxの表示オン・オフだけでも戦闘の気持ちよさは確認できます。
当たった瞬間に敵の色を変えるなど、小さなフィードバックを足すと達成感が増しますよ。
弾(Projectile)攻撃の概要
遠距離攻撃は、プレイヤーの前方に弾Prefabを生成し、Rigidbody2Dで飛ばします。
弾にもTrigger Collider2Dを付け、敵に当たったらダメージを与えて自身を破棄します。
public class Bullet2D : MonoBehaviour
{
public float speed = 10f;
public int damage = 5;
void Update => transform.position += Vector3.right * speed * Time.deltaTime;
void OnTriggerEnter2D(Collider2D other)
{
var enemy = other.GetComponent<EnemyHealth>;
if (enemy != null)
{
enemy.TakeDamage(damage);
Destroy(gameObject);
}
}
}
弾は画面外に出たらDestroyする処理も忘れずに。
オブジェクトが増え続けると処理落ちの原因になります。
敵側のダメージ受け取り
敵にはEnemyHealthスクリプトを付け、HP変数とTakeDamageメソッドを用意します。
081のHPゲージと共通の設計にすると、プレイヤーにも同じ仕組みを流用できます。
public class EnemyHealth : MonoBehaviour
{
public int maxHP = 30;
private int currentHP;
void Start => currentHP = maxHP;
public void TakeDamage(int amount)
{
currentHP -= amount;
if (currentHP <= 0) Destroy(gameObject);
}
}
HPが0になったときの演出(消滅エフェクト、スコア加算)は、Destroyの前に足していきましょう。
- STEP1敵にHPを付ける
EnemyHealthでmaxHPとTakeDamageを実装
- STEP2ヒットボックス作成
子オブジェクト + Trigger Collider2D。
初期は非表示
- STEP3攻撃入力とクールダウン
Fire1でHitboxを短時間有効化
- STEP4ダメージ連結
OnTriggerEnter2DでTakeDamageを呼ぶ
- STEP5081HPゲージと接続
敵のHPをSliderで表示(081記事参照)
クールダウンと攻撃の手触り
attackCooldownは0.3〜0.5秒が多いです。
短すぎると連打で敵が瞬殺され、長すぎるともっさり感じます。
Play中に調整し、移動・ジャンプとのバランスを取りましょう。
攻撃中に移動を止めたい場合は、攻撃フラグ中は移動入力を無視する処理を079の移動スクリプトに足します。
逆に、移動しながら攻撃できるスタイルなら、そのまま併用しても問題ありません。
レイヤー設定と当たり判定の整理
攻撃判定が安定するよう、レイヤーを分けておくと後からの拡張が楽です。
| レイヤー名 | 用途 | 衝突する相手 |
|---|---|---|
| Player | プレイヤー本体 | Ground、Enemy(ダメージ受け) |
| PlayerAttack | 近接ヒットボックス・弾 | Enemyのみ。 Playerとは衝突しない |
| Enemy | 敵キャラ | Player、PlayerAttack、Ground |
Physics2DのLayer Collision Matrixで、PlayerAttackとPlayerの衝突をオフにします。
これで自分の攻撃に自分が当たる事故を防げます。
横スクロールアクションへの組み込み
077のカメラ追従ステージに敵を1体置き、080の攻撃で倒せるか試すのが、戦闘ループ確認の最短コースです。
敵は足場の上に配置し、プレイヤーがジャンプで届く位置に置きましょう。
敵がプレイヤーに触れたときのダメージは、081のHealthをプレイヤー側にも付ければ同じ仕組みで実装できます。
双方向のダメージが動けば、横スクロールアクションの骨格はほぼ完成です。
つまずきやすいポイント
攻撃実装でよくある問題は次のとおりです。
- 当たらない → Layer Collision Matrixでプレイヤー攻撃と敵が衝突するか確認
- 何度もダメージ → ヒットボックスの有効時間を短く、またはヒット済み管理を追加
- 自分に当たる → 攻撃レイヤーを「PlayerAttack」に分け、プレイヤー本体とは衝突しないよう設定

080と081が揃えば、「攻撃 → ダメージ → HPゲージが減る」という戦闘の最小ループが完成です。
敵1体だけでも、このループが動けば大きな一歩ですよ。
記事を読んで「作ってみたい!」と思ったら!初心者でも1本完成できる講座で実力をつけよう
知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。プログラミング未経験からでも取り組める講座で、ゲーム開発の第一歩を踏み出しましょう。
Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!初心者でもデッキ構築×JRPGをスマホ向けに作れる!】

- Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
- Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
- 初心者でも迷わず進められる丁寧な解説構成
- ノンフィールドRPGとデッキ構築JRPGの2つをまとめて学べるセット講座
Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、プログラミング未経験の初心者でも取り組みやすい、ステップバイステップ形式の講座です。
Unity6対応・スマホ化対応の最新カリキュラムで、読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。
「何から始めればいいかわからない…」という初心者が最初に選ぶ一本として最適な講座です。
Unity6対応・スマホ化対応の最新カリキュラム
ゼロからでもRPGを完成させよう
→ スレスパ風デッキ構築JRPG講座を見てみる
初心者でもスマホ対応のRPGが作れる!まずは1本完成を目指そう!
Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!初心者でもスマホ化・広告実装まで対応した本格横スクロールACTが作れる!】

- ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
- 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
- スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
- 敵AI15体・多彩なマップギミック・武器システムを完全実装
- 完全オリジナルゲームをアセット不使用で素材提供付きで制作
Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。
全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。
「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。
スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!
ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

- ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
- 「3Dは難しそう」と感じている初心者でも取り組みやすい丁寧な解説構成
- スマホ化対応で実機で動かせるゲームが完成
- アセットを使った実践的なゲーム開発手法が身につく
- 画像・動画・全ソースコード公開の充実したサポート
ゼルダ風3Dアクションゲームの作り方講座は、「3Dゲームは難しそう…」と感じている初心者こそおすすめの入門講座です。
全16回の丁寧な解説で、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを確実に完成まで導きます。スマホ化対応で実機で動かせるため、初めて3Dゲームを作り上げた達成感がひときわ大きい講座です。
「3Dゲームを自分でも作れるか試してみたい」という初心者の最初の一歩として最適です。
初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の壁を一気に突破しよう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
全16回でスマホで動くオリジナル3Dゲームを完成させよう!
まとめ
Unityの攻撃実装は、ヒットボックス → ダメージ処理 → クールダウンの3点を押さえれば動きます。
近接は子オブジェクトのTrigger、遠距離は弾Prefabの生成、どちらも敵のTakeDamageに繋げます。
081でHPゲージを足せば、ダメージが視覚的に伝わる戦闘になります。
079移動・078ジャンプ・077カメラと組み合わせれば、横スクロールアクションの核が揃います。
戦闘からステージ完成まで学びたい方は、Unity入門の森の2Dアクション講座も参考になります。
今日は敵1体に攻撃が当たり、HPが減るところまで進めてみてください。


コメント