ダメージシステム

確認済のバージョン: 2017.3

-

難易度: 初級

本キットにおけるダメージのシステムは、 2 つのコンポーネント(Damager スクリプトと Damageable スクリプト)で構成されています。

Damager スクリプトをゲームオブジェクトに加えると、Damageable コンポーネントを持つすべてのゲームオブジェクトにダメージを与えることができるようになります。(相互の設定が適合している必要があります。)

Damager

Damager コンポーネントには、Damageable コンポーネントおよび非 Damageable コンポーネントとの衝突時のイベントが含まれています。体力の計算は自動的に行われ、これらのイベントはゲームプレイの変更や視覚エフェクトをトリガーするために使用されます。

Damager コンポーネントはコライダーを必要としません。このコンポーネントは Scene ビュー上にボックス上のギズモを表示します。このギズモを使ってサイズと位置の調整を行えます。

  • Damage ― そのゲームオブジェクトが Ellen や Chomper などの Damageable にヒットした時に与えるダメージの量です。

  • OffsetSizeDamager 衝突ボックスを定義する 2 つのパラメーターです。Scene ビューで Spikes の周りに表示されるボックスがこれに当たります。衝突されることでダメージを与えます。

  • Offset Based On Sprite Facing ― スプライトの向いている方向に応じて Damager が位置を変えられるようにするものです。これは Ellen にも使用されています。向いている方向に応じて Damager が左右にフリップするようになっています。

  • Sprite Renderer ― 上記の設定が使用する Sprite Renderer です。

  • Can Hit Triggers ― 有効にすると Damager がトリガーと衝突し、無効にするとトリガーを完全に無視します。

  • Force Respawn ― 有効にすると、Damageable を持つゲームオブジェクトが直近のチェックポイントに即座に生成されます(例えばプレイヤーが水に落ちた時に、Acid プレハブがこれを使用します)。

  • Ignore Invincibility ― 有効にした場合、DamagerDamageable へのヒットは検知しますが体力は奪いません。サンプルゲームでは Acid に使用されており、プレイヤーが敵にヒットされた後で無敵状態だった場合も含めて常に再生成されるようになっています。

  • Hittable LayersDamager がダメージを与えるレイヤーです。選択されていないレイヤーはダメージを受けません。

  • On Damageable Hit:Damageable コンポーネントを持つゲームオブジェクトがヒットを受けた時に再生されるイベントです。

  • On Non Damageable HitDamageable コンポーネントを持たないゲームオブジェクトがヒットを受けた時に再生されるイベントです。

Damageable

Damageable コンポーネントは、Damager コンポーネントを持つゲームオブジェクトとの衝突によってダメージを受けます。 ダメージを受けた時用、体力回復時用、体力変化時用、体力が完全に尽きた時(死亡)用のイベントがあります。

Damager とは逆に、Damageable コンポーネントは、同じゲームオブジェクトにアタッチされたコライダーに依存するため、ゲームオブジェクトには Damageable スクリプトを追加するだけでなく、衝突の検知される領域を定義するコライダーも忘れずに追加してください。

  • Starting Health ― 体力のレベルです。Damagers は、衝撃が発生する毎に体力を奪います。Damageable Component を持つゲームオブジェクトは、この値が 0 になると死亡します。

  • Invulnerable After Damage ― これが有効になった Damageable を持つゲームオブジェクトは、衝撃を受けた後一定時間無敵(ダメージを受けない状態)になります。

  • Invulnerability Duration ― 衝撃を受けた後に Damageable が無敵状態になる時間の長さ(秒単位)です(ひとつ上の設定が有効になっている場合にのみ適用されます)。

  • Disable On Death ― 死亡時にゲームオブジェクトを無効にする設定です。

  • Centre OffsetDamageable の中心を定義します(オフセットが (0,0) の場合、ゲームオブジェクトの位置が Dameageable の中心となります)。Damager との距離を計算するのに使用されます。

  • On Take Damage ― ゲームオブジェクトがダメージを受けた時にトリガーされるイベントです。

  • On Die ― ゲームオブジェクトの体力が 0 になった時にトリガーされるイベントです。

  • On Gain Health ― ゲームオブジェクトが体力を回復した時にトリガーされるイベントです。

  • Persistent Type ―「データ・パーシステンス」の項をご覧ください。

  • Data Tag ― 「データ・パーシステンス」の項をご覧ください。

Checkpoint

Checkpoint は Project ウィンドウの Prefabs > SceneControl の中にあります。

プレイヤーが Checkpoint コライダーに入る度に、この Checkpoint がアクティブになります。水に落ちた時(または Force Respawn の設定が有効になった Damager から攻撃を受けた時)に、この Checkpoint からプレイヤーが復活します。

(注)プレイヤーはゲームオブジェクトの位置から復活しますので、その位置が地上になっていることを確認してください。