初心者必見!現場レベルの「ゲーム制作講座PDF」を無料プレゼント中!▶

Unityで攻撃を実装 | 当たり判定とダメージ

Unity ゲーム制作実践

敵に触っても何も起きない——攻撃ボタンを押しても反応がない。

移動とジャンプが動いたあと、多くの方が「戦わせたい」と感じるのが自然な流れです。
しかし攻撃は、当たり判定・ダメージ処理・クールダウンの3つが揃わないと、ゲームとして成立しません。

この記事では、Unityで攻撃の最小ループを、近接と弾の2パターンで整理します。
081のHPゲージと接続すれば、ダメージが見える戦闘が完成します。

  • 攻撃ボタンを押しても当たり判定が発生しない
  • 1回の攻撃で何度もダメージが入ってしまう
  • 連打で攻撃が止まらず、ゲームバランスが崩れる

この記事でわかること

  • 攻撃ヒットボックスの作り方
  • OnTriggerEnter2Dでのダメージ処理
  • クールダウンで連打を防ぐ方法
  • 近接攻撃と弾(Projectile)の違い
  • 081HPゲージとの接続イメージ
  • 初心者でも理解できる解説

\プログラミング未経験でも大丈夫!まずは1本作り切ろう/

初心者が最初に選ぶならコレ

Unity ノンフィールドRPG
+スレスパ風JRPG講座

★★★★★ (Unity6対応)

Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。

講座を見てみる \ゼロからでもスマホ対応RPGが作れる!/

憧れのアクションゲームに挑戦

Unity 2Dアクションゲーム
の作り方講座(ロックマン風)

★★★★★ (スマホ化・広告実装)

初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。

講座を見てみる \初心者でも本格ACTが完成する!/

3Dゲーム開発の入口はここ

ゼルダ風3Dアクションゲーム
の作り方講座

★★★★★ (スマホ化対応)

「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。

講座を見てみる \初心者でも全16回で3Dゲームが完成!/

攻撃の最小ループ

戦闘の核は、次の流れです。

  1. プレイヤーが攻撃入力をする
  2. ヒットボックス(当たり判定)が有効になる
  3. 敵と接触したらダメージを与える
  4. クールダウン中は次の攻撃を受け付けない

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を呼ぶ
  • STEP5
    081HPゲージと接続

    敵の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をスマホ向けに作れる!】

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築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が作れる!】

Unity 2Dアクションゲームの作り方講座(ロックマン風)

  • ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
  • 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
  • スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
  • 敵AI15体・多彩なマップギミック・武器システムを完全実装
  • 完全オリジナルゲームをアセット不使用で素材提供付きで制作

Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。

全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。

「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。

スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!

ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

ゼルダ風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が減るところまで進めてみてください。

コメント

タイトルとURLをコピーしました