前書き
TopDown Engineのシステムとしてキャラクターを構成する要素はいろいろありますが簡単に書くと以下の要素が必要になります。
- キャラクターを動かすためのコントローラー
- キャラクターを表示するためのモデル
- キャラクターが自分で行動するためのAI Brain(プレイヤーの場合は不要)
- キャラクターが実行するための各種キャラクターアビリティ
- 体力(Healthコンポーネント)
今回はこの中で、体力(Helathコンポーネント)について解説しようと思います。
またHealthコンポーネントに紐づく処理としてDamage Type(状態異常)もありますのでこちらも合わせてご確認ください。
体力(Helthコンポーネント)の概要
まず簡単に体力(以下、Helathコンポーネント)では以下の機能を持っています。
- 体力の管理: ユニットの現在の体力を保持し、加減算を可能にします。
- ダメージ処理: ダメージが発生した際、特定のアクションをトリガーします。
- 死亡処理: 体力がゼロになった際、死亡アクションやアニメーションをトリガーします。
キャラクターにHealthコンポーネント1つ追加することで基本的な機能を実装することが出来ます。
Healthコンポーネントの主要なパラメータ
Healthコンポーネントで使用する主要なパラメータは以下になります。
# 他にもいろいろなパラメータを設定できますが、まずは主要なHealth、Damage、Deathを抜き出して説明していこうと思います。
Health
- InitialHealth
- キャラクターの初期体力を設定します。
- 例: 主人公は高い耐久力を持つ場合、
100
などに設定できます。
- MaximumHealth
- 最大体力を指定します。これにより、回復可能な上限を設定できます。
- ResetHealthOnEnable
- オブジェクトが有効化された際に体力を初期値にリセットするかどうかを指定します。
通常、リスポーン後に使用します。
- オブジェクトが有効化された際に体力を初期値にリセットするかどうかを指定します。
Damage
- Imuuto To Damage
- ImmuneToDamageがtrueに設定されている場合、そのオブジェクトはすべてのダメージを無視します。これにより、特定の状態(例: 無敵モード、シールドの使用中など)でオブジェクトを保護することができます。
- Damage MM Feedbacks
- ダメージを受けた時のFeedbacksを実行します。
- Feedback Is Proportional To Damage
- ダメージを受けた際に発生するフィードバック(エフェクトや演出)が、受けたダメージ量に比例するかどうかを制御します。
- Prevent Take Self Damage
- 自分自身によるダメージを防ぐかどうかを制御します。例えば爆発ダメージなどを発生させた場合、敵だけでなく自分にもダメージを与えることが可能です。
Death
- Destroy On Death
- キャラクターやオブジェクトが死亡した際に、自動的に削除(Destroy)されるかどうかを制御します。
- Delay Before Destruction
- 死亡時にオブジェクトを削除するまでの遅延時間(秒単位)を指定します。
- Points When Destroyed
- キャラクターを倒したときに得られるポイントになります。
- Respawn At Initial Location
- キャラクターが倒された時、事前に保存された初期位置に戻ります。
- 各種 Disable On Death
- 倒された場合、コントローラーの停止やモデルの非表示、Collisionの非活性、Layerの変更など倒された時の状態を変更することが出来ます。
- Death MM Feedbacks
- 倒された時のFeedbacksを実行します。
Healthコンポーネントを使った設定例
Health、Damage、Deathのパラメータを紹介しましたが、上記3つのパラメータをスクリプトなどで設定することで作れるキャラクターを簡単に紹介しようと思います。
特定のアイテムを取得することで最大HPが2倍になる
HealthにあるMaximumHealthの値を変更することで最大HPを変えることが出来ます。例えば最大HP増加アイテムを取得した時にキャラクターのMaximumHealthを新しい値に設定することで最大HPを増加させることが出来ます。
一時的に無敵になる
DamageにあるImuuto To Damageをスクリプトで制御することで一時的に無敵になる設定をすることが出来ます。例えばステージ上の無敵になるアイテムを取得した時にImuuto To Damageを有効にすることで無敵状態を作ることが出来ます。
ダメージを受けると一定範囲内にダメージを与える
DamageにあるDamage MM Feedbacksを使うことでDamageを受けた時のイベントを設定することが出来ます。例えば、Damage MM FeedbacksでDamage On Touchのオブジェクトを生成するようなFeedbacksを設定することでDamageを受けると周囲にダメージが発生するような状態を作ることが出来ます。
倒されると壁のようになるキャラクター
DisableModelOnDeathやDisableCollisionsOnDeathをfalseに設定してDeath MM FeedbacksでRigidbodyのBodyTypeをKinematicに設定することでキャラクターが倒された時にそのままキャラクターが障害物として残り続けるようになります。
このように既存のHealthコンポーネントにちょっとしたスクリプトやパラメータの組み合わせでいろいろなシチュエーションでキャラクターを作ることが出来ます。自分の作りたいキャラクターがある場合はまずはTopDown Engineのコンポーネントでどこまでできるか調べてみましょう。
まとめ
今回はTopDown Engine の Healthコンポーネント の基本機能や主要なパラメータ、そして応用例について解説しました。
TopDown Engine全体で言えることですがいろいろなことが出来る反面、すべてを理解することはとても難しいかなと思います。なので、まずは1つずついろいろなシチュエーションのキャラクターを作りながら徐々にコンポーネントの使い方を知っていただけたらいいかなと思います。
まずはHealthコンポーネントの理解を深めて、ぜひ自分だけのオリジナルキャラクターやシステムを生み出してみてください!
コメント