Chapter.17「調整:ノックバックを実装する」17.調整:ノックバックを実装するアクションゲームには欠かせないといってもいいノックバック演出。攻撃を当てた瞬間に、敵やプレイヤーの動きが止まってからリアクションが始まるというもの。実装に当たって改めてノックバックについて調べてみると、様々なタイプがあるようです。ゲーム内の時間を丸ごと止めるもの、敵だけ、プレイヤーだけ止めるものなどなど。どのようなノックバックがあるかについては、下記の動画が大変参考になりました。格闘でなく射撃であることを考慮すると「敵だけを止める」タイプのヒットストップが適しているかと思いました。以下、ヒットストップについての考え余談。ヒットストップとはなんぞせっかくのアクションゲームだしヒットストップとか入れてみるか(開発延長)剣とか格闘のゲームでは欠かせない演出だけど、銃とかシューティングではあんまり見ない気がする?サムスのチャージショットくらいしか例が浮かばない射撃攻撃とヒットストップについて仮説1:ヒットストップとは「吹っ飛ばし」の再現であるなので、ライフルとかサブマシンガン、レーザーみたいな貫通の攻撃とはあまり相性が良くない逆に射撃であっても、ミサイルとか波動拳とかかめはめ波みたいな、衝撃の攻撃とは相性が良い仮説2:ヒットストップとは「抵抗」の再現であるサンドバックを蹴れば、かならずサンドバックからの跳ね返りが存在し、無抵抗で振り抜くことはできないその抵抗の感覚を再現するのがヒットストップであるため、自分の体から離れてしまった攻撃からは抵抗を受けないため、射撃とは相性が良くないここまで書いてて思ったけど、要するに現実世界に存在する「作用反作用」のフィードバックをいかにしてプレイヤーに与えるか、という問いに対する1つの答えってことかな逆に言えば、ヒットストップを設けることで、射撃攻撃であっても「吹っ飛ばし」や「抵抗」のような作用反作用のフィードバックをプレイヤーに与えられる、ということだろうかあとカメラシェイクかこっちは実装したことあるからすぐいけるはずひとくちにヒットストップといってもさまざまなパターンがある模様それらの挙動を比較してくれているこの動画がかなり参考になる。自然かな?サムス:撃った瞬間反動でちょっと後ろに下がってる。ヒットストップというよりその反動で重量感を出しているもようベヨネッタ:当たった瞬間その場で硬直してから吹っ飛んでる。硬直中は完全に動きが止まるわけじゃなくて、やられモーションのままぶるぶるしてる?それともエフェクトでそうみえるだけ?こっちで見ると、食らったほうはその場で上下に細かく揺れたり震えたりしてるのがわかる撃ったほうはストップしてるというか反動で後ろに下がるor硬直してるだけだなていうか格闘でも、攻撃したほうにはヒットストップ入れてないな不利になっちゃうから当たり前かヌルっと止まると気持ちよくない、パキッとその場で止まって欲しいのでWaitForSecondsをつかうか。実装したけど削除しました!!!https://gameshi.info/wp-content/uploads/2019/02/bandicam-2019-02-03-15-48-22-126.mp4一度実装してみたけど、思ったよりも爽快感に寄与せずゲームプレイがダラけただけだったので削除しました!攻撃が当たった瞬間=ノックバック処理の実行直前に、NavMeshのVelocityを0にするStopMotionメソッドを事項してます。//speedをゼロにするやり方は、減速してから止まるので気持ちよくない。Vector3.zero;//speedをゼロにするやり方は、減速してから止まるので気持ちよくない。0f;}がんばって作ったけど削除しました!!!あと、これを実装するときにPlayerShootingクラスが超でぶになって見づらかったので、リファクタリングを一緒にしてます。これについては次回まとめます。コメントをキャンセルメールアドレスが公開されることはありません。