【Unity】ダメージ判定を実装する方法

unity

前回までの記事で敵が追いかけてくるところまでを実装しました。

今回はプレイヤーが敵を攻撃して倒せるようにしてみました。

上の動画の通り、パンチが的にヒットするとパーティカル・エフェクトが発生してます。

実装するポイントとしては以下の通り。

  • 攻撃判定コライダとエフェクトを作成
  • 攻撃用アニメーションを作成

空のオブジェクトAttackHitDetectorを作ってコライダやリジッドボディを設定しました。

ボックスコライダは、デフォルトでオフにしておいて、攻撃アニメーションの途中でオン、オフします。

リジッドボディは、衝突判定の際に、片方にリジッドボティが必要とのことでセットしています。

攻撃がヒットした時に、パーティクルを再生するようにしています。

パーティクル自体は空のオブジェクトAttackHitDetectorの子オブジェクトにしています。

アタッチしているスクリプトのOnHitAttackは以下の通り。

    public void OnHitAttack(Collider collider)
    {
        var targetMob = collider.GetComponent<MobStatus>();
        if (null == targetMob) return;

        // プレイヤーにダメージを与える
        targetMob.Damage(1);
    }

引数のcolliderは、攻撃がヒットした相手のコライダです。

コライダから相手のステータスを取り出して、ダメージを与えるようにしています。

アニメーションについては、以下の通り。

Attackへの遷移条件は、Attackという名のパラメータを設定して、マウス左クリックされた時にスクリプトで遷移させます。

_animator.SetTrigger("Attack");

パンチのアニメーションに合わせて、攻撃判定コライダをオン、オフするには、以下のようにAnimation画面でセットします。

以上です。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog