ヘルスコントローラー
キャラクターに付与されるコンポーネントは、HP を管理するために「Health Controller」 (vHealthController
) クラスから派生されている。
インスペクター
デバッグ用フィールド
- Is Dead:死亡しているかどうかを真偽で表示する
- Current Health:現在の HP をゲージで表示する
プロパティ
- Is Immortal:不死にする (デフォルト:
無効
) - Fill Health On Start:開始時に HP を全快する (デフォルト:
有効
) - Max Health:最大 HP (デフォルト:
100
) - Health Recovery:回復量/時間経過で徐々に回復する量 (デフォルト:
0.0
) - Health Recovery Delay:被ダメージ後に回復を遅延させる時間 (単位:秒/デフォルト:
0.0
) - Death By:死亡時のアニメーション処理を選択する
- Animation:アニメーション
- Animation with Ragdoll:ラグドールありのアニメーション
- Ragdoll:ラグドール
- Remove Components After Die:死亡後にコンポーネントを除去する/死体を残す場合に不要なコンポーネントを除去するために用いる
イベント
- On Start Receive Damage:被ダメージ計算の開始時に呼び出される
- On Receive Damage:被ダメージ処理の完了後に呼び出される
- On Dead:死亡時に呼び出される
- On Change Health:HP が変化した場合に呼び出される
- On Reset Health:HP がリセットされた場合に呼び出される
API
HP やダメージの処理をスクリプトから操作する場合、「Health Controller」 (vHealthController
) クラスに実装された API を使用する。
プロパティ
- currentHealth
- isDead
- canRecoveryHealth
メソッド
AddHealth
:HP を指定した値だけ増減するChangeHealth
:HP を指定した値に変更するResetHealth(float)
:キャラクターを指定した HP で蘇生させるResetHealth()
:HP を全快させる/キャラクターを蘇生させるChangeMaxHealth
:最大 HP を指定した値だけ増減するSetHealthRecovery
:回復量を設定するTakeDamege
:ダメージを受ける
ダメージパーティクルを設定する
ダメージを受けた際にエフェクトとして発動させるパーティクルを設定するには、キャラクターに「Hit Damage Particle」 (vHitDamageParticle
) コンポーネントを付与する。
- Hit Damage Particle (vHitDamageParticle)
設定
- Default Damage Effect:デフォルトのエフェクトとして使用するパーティクルを含むプレハブを指定する。
- Custom Damage Effects:追加でエフェクトを指定するリスト
- Damage Type:ダメージの種類
- Effect Prefab:エフェクトとして使用するパーティクルを含むプレハブ
- Rotate to Hit Direction
- Attach in Receiver
- On Trigger Effect:エフェクトの発動に伴って呼び出すハンドラ
参考:
custom Hit Damage Particle – Invector Forum
Hit Damage Particle doesn’t instantiate at the right spot – Invector Forum
ダメージオブジェクトを作成する
接触したキャラクターにダメージを与えるオブジェクトを作成するには、オブジェクトに「Object Damage」 (vObjectDamage
) コンポーネントを付与する。
- Object Damage (
vObjectDamage
)
設定
- Damage Options:ダメージオプションを指定する
- Override Damage Sender:キャラクターに持たせる場合に、キャラクターを指定する (デフォルト:
None
) - Layer To Collide:衝突レイヤーを指定する (デフォルト:
Nothing
) - Tags:衝突対象のタグを指定する (デフォルト:
Nothing
) - Continuous Damage:継続してダメージを与える (デフォルト:
無効
) - Damage Frequency:継続してダメージを与える際のダメージ頻度 (単位:秒/デフォルト:
0.5
) - Collision Method:衝突を判定するイベント
- On Trigger Enter:トリガー
- On Collision Enter:剛体
- On Particle Collision:パーティクル
- Particle:衝突を判定するパーティクル/「On Particle Collision」を使用する際に自動的に設定される
- Limit Particle Collision Event:パーティクルの衝突イベントを制限する (デフォルト:
無効
) - Max Particle Collision Event:1フレームに処理するパーティクル衝突イベントの最大数 (デフォルト:
1
)
ダメージオプション (Damage Options)
ダメージに共通する項目の設定を行う。
設定
- Damage Type:ダメージの種類
- Damage Value:ダメージの量 (デフォルト:
15
) - Stamina Block Cost:ブロックした場合のスタミナ消費 (デフォルト:
5
) - Stamina Recovery Delay:スタミナ回復開始までの遅延時間 (デフォルト:
1
) - Ignore Defense:防御不可能にする (デフォルト:
無効
) - Active Ragdoll:ラグドール状態にする (デフォルト:
無効
) - Reaction ID:被ダメージモーションを指定する (
-1
の場合には被ダメージモーションが発動しない/デフォルト:0
) - Recoil ID:ブロックされた場合の反発モーションを指定する (デフォルト:
0
)
ラグドール (Ragdoll)
使い方
- ヒエラルキーでキャラクターを選択し、アクティブにする。
- メニューから「Invector > Basic Locomotion > Components > Ragdoll」を選択し、「Create Ragdoll」ウィンドウを開く。
- ボーンが適切に割り当てられていることを確認し、「Create」ボタンを押してラグドールを生成する。
動画:
被ダメージ部位を設定する (Body Part)
参考:
head shot animations – Invector Forum
attacking body parts – Invector Forum
changing damage to enemies for different parts of the body – Invector Forum
BodyPart health – Invector Forum
achieving detachable limbs method? – Invector Forum
コンポーネント
- Health Controller (
vHealthController
) - Hit Damage Particle (
vHitDamageParticle
) - Object Damage (
vObjectDamage
) - Ragdoll System (
vRagdollSystem
):ラグドール - Damage Receiver (
vDamageReceiver
):部位別の被ダメージ処理を実装する - Hit Box (
vHitBox
):近接格闘用に当たり判定を設定する - Hit Effects (
vHitEffecs
):近接格闘用にヒットエフェクトを設定する
クラス
- vDamage:ダメージオプションのクラス (Damage Options)
サンプル
プレハブ
- Spike Group (
SpikeGroup.prefab
):刺突トラップ - Toxic Area (
ToxicArea.prefab
):毒エリア