アクションゲー!ヒットストップの実装!

アクションゲーで攻撃を敵に当てた時、一瞬攻撃が止まるような演出ありますよね!(モンハンがいい例だったはず。ブラボもそうだったかな?)

今回はその実装です!

 

とりあえず武器にコリジョンをつけたキャラを使用します。

f:id:Free_Gamer:20180625222040p:plain

以下の処理を組みます。

f:id:Free_Gamer:20180625224211p:plain

武器のコリジョンにオーバーラップしたアクターが指定したタグ持ちなら、ダメージを与え、ヒットストップをかける。

といった処理です!

ヒットストップ処理はマクロにひとまとめにしてます!

中身はこう!

f:id:Free_Gamer:20180625224416p:plain

SetglobalTimeDilationは時間の速さを変えれます。値が小さいほど遅くなります。

Delayで何秒時間を遅くするかを指定します。

Delayで指定した秒数が経過したら、SetglobalTimeDilationの値を「1」に戻し、時間の速さを元に戻します。

f:id:Free_Gamer:20180625224750p:plain

SetglobalTimeDilationの値につながってる変数「StopTime」には「0」を入れ、

Delayの値につながってる変数「Delay」には「0.00834」を入れます。(0.00834は手探りで見つけたちょうどいい数値)

 

次に、敵側のBPです。

f:id:Free_Gamer:20180625225237p:plain

敵側にもヒットストップ処理をする必要があります。

プレイヤーのヒットストップ処理の数値と一緒にしましょう。

 

StopTime(SetglobalTimeDilation)・・・「0」

Delay(Delay)・・・「0.00834」

 

おまけとして、敵の体力が「0」になったらラグドール化して死亡するようにしてます。

 

それではプレイ!

youtu.be

しっかりヒットストップがかかってますね!

 

ちなみに先ほど、敵側のヒットストップ処理で

 

プレイヤーのヒットストップ処理の数値と一緒にしましょう。

 

と言いましたね。

同じにしないと、例えばプレイヤーだけHitStopのDelayの数値を変えた場合、敵に攻撃が当たった瞬間、プレイヤーの動きが固まってしまったりしてしまいます。たまに。

まあ、その辺は実際にやって確かめてみてください。(この辺はまだ不確定なのでよくわかってません。すいません)

 

これで爽快感のあるアクションが作れるかもですね!

 

それではまた!^^ノシ