前書き
ダメージを発生させる方法として”DamageOnTouch”コンポーネントを使用します。このコンポーネントはインスペクター上でダメージを発生させる対象、タイミング、ダメージ量、ダメージが発生する頻度などなどダメージに関することがほとんど実装されています。難しく考えずに感覚的に設定できるため、まずはDemoなどを見ながら設定して慣れていけたらいいかと思います。
ダメージを発生させる方法
ダメージを発生させる方法としてTopDown Engineは”Damage On Touch“コンポーネントで実現しています。Damage On Touch スクリプトが付与されているオブジェクトにColliderを設定することで接触した際にダメージが発生するオブジェクト作ることができます。
参考にKoalaNinjaを見てみる
すでに設定されているオブジェクトとして”KoalaNinja”があります。KoalaNinjaのアタッチされているスクリプトを見てみるとDamage On Touchが設定されているため、まずはKoalaNinjaの設定を見てみましょう。
![KoalaNinjaのコンポーネント一覧](https://aquaregia31.com/wp-content/uploads/2023/08/KoalaNinja-1024x462.png)
KoalaNinjaのDamage On Touchの設定
DamageOnTouchは大きく分けると以下の4つの設定があります。
- Targets(誰にダメージを発生させるのか)
- DamageCaused(どの程度ダメージを発生させるのか)
- DamageTaken(衝突した時自身にダメージを発生させるのか)
- Feedbacks(衝突した時のFeedbacks)
Feedbacks=FEELというアセットの機能になります。
TopDown Engineを購入すると自動的に適応されます。
![DamageOnTouchのHierarchy](https://aquaregia31.com/wp-content/uploads/2023/08/DamageOnTouch.png)
Targets(誰にダメージを発生させるのか)
Targetsでは誰にダメージを発生させるのかを設定します。
設定方法はTargetLayerMaskから選択します。ここに表示される内容はLayerで設定したものが表示されるようになるので、自分で新しいLayerを作成して設定することも可能です。
KoalaNinjaの設定を見てみると”Player”だけ設定されている状態です。この状態ですとLayerが”Player”のオブジェクトだけがDamageOnTouchで設定されたダメージが発生するようになります。
以下の例では”Player”だけですが複数選択することも可能です。
![DamageOnTouchのTargetLayerMask](https://aquaregia31.com/wp-content/uploads/2023/08/TargetLayerMask.png)
DamageCaused(どの程度ダメージを発生させるのか)
DamageCausedではどの程度ダメージを発生させるのかを設定します。
Min/MaxのDamageCausedを設定することでダメージ量を決めることができます。
以下の参考だと”10″~”10″ですがこれが例えば”10″~”20″の場合は小数まで計算されることに注意してください。ダメージ表記をする場合、小数まで表示されてしまうので小数を表示したくない場合は”10″~”10″のように同じ値を設定するか、ソースコードを修正して小数を使わない(int型に変更する)など修正が必要です。
![DamageOnTouchのDamageCaused](https://aquaregia31.com/wp-content/uploads/2023/08/DamageCaused.png)
DamageTaken(衝突した時自身にダメージを発生させるのか)
DamageTakenでは衝突した時自身にダメージを発生させるのかを設定します。
今回のKoalaNinjaでは「KoalaNinjaに接触したプレイヤーにダメージを発生させる」という動きをさせる関係上、DamageTakenは”0″を設定しています。
例えば「自分のライフを犠牲に攻撃する」といった攻撃方法の場合は敵にダメージを発生させる以外に自分(Player)にもダメージが発生するなどあると思います。そういった場合にDamageTakenに値を設定するのかなと思います。
![DamageOnTouchのDamageTaken](https://aquaregia31.com/wp-content/uploads/2023/08/DamageTaken.png)
Feedbacks(衝突した時のFeedbacks)
Feedbacksでは衝突した時にどのような効果を発生させるか設定できます。
例えば、「衝突した際にカメラを揺らす、音楽を鳴らす、特定のEventを実行する」などFeedbacksで実行可能な効果が設定できます。
![DamageOnTouchのFeedbacks](https://aquaregia31.com/wp-content/uploads/2023/08/Feedbacks.png)
まとめ
今回はDamage On Touchについて紹介しました。
最低限の紹介になりますが、ほかにも異常状態の設定ができたり、ノックアップの設定ができたりいろいろとやれることがたくさんあります。公式Documentにいろいろと説明があるため、まずは動かしてみて使い方を知っていただけるといいかなと思います。
コメント