前回までの記事で敵が追いかけてくるところまでを実装しました。
今回はプレイヤーが敵を攻撃して倒せるようにしてみました。
上の動画の通り、パンチが的にヒットするとパーティカル・エフェクトが発生してます。
実装するポイントとしては以下の通り。
- 攻撃判定コライダとエフェクトを作成
- 攻撃用アニメーションを作成

空のオブジェクト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画面でセットします。

以上です。