Last Updated 2024.03.10
3D格ゲー的なカメラワークの実装
Cinemachineを使った3D格闘ゲーム的なカメラを実装しました。
詳細はBLOGの方にまとめてあります。
どうやって再現するか悩んでた時期まで含めると、結構な時間がかかってしまいました……
操作側の判定(1P側2P側)も、ここで使ったビューポート座標を参照する仕様に変更。
BLOGにまだ未記載なんですが、上方向に対応した挙動とか、画面中央でプレイヤー同士が重なるような場合のスタック対策に手間取った話もあるので、余裕ができたとき別の記事にまとめる予定です。
移動関係の仕様変更
3D格ゲー的なカメラワークの実装により、「奥」や「手前」といった、いわゆる「軸」の概念も実装されました。それに伴い、軸移動の実装や、2D的なロジックで動かしていた移動方法を改修する必要があったので、スクリプト全体の修正や見直し。
キー入力による前後、奥手前の移動は、最初から組み直すのに近い状況だったので、エルツ方式の移動システムに移行してみました。
ダッシュの改修
聖闘士走りを実装しました。
セットの推移と勝利演出の実装
壊れなかったオブジェクトの内部情報は引き継げるので、そこにセットカウントや勝利数を記録し、セットの推移と勝利ポイント獲得の流れを実装しました。
勝敗が決まっていなかったら次のラウンドへ、勝利ポイントが必要な数に達したらゲームセット、勝利演出に移行……というお馴染みの流れですね。
併せて、1セット目の開始時に開幕演出という流れも実装出来ました。
髪の毛への重力とか風の影響、ボーン関係は、ちゃんと学習して修正します。
AnimatorのnormalizedTimeを参照した制御
AnimationEventによる制御は、使い方も解りやすく、実際にいろんなケースで利用しているのですが、アニメーション自体を変更した場合は設定し直さないといけなかったり、なにぶん取り扱うアニメーションの数が増えてきて、どれに何をつけてるのか把握漏れが出てきているので、スクリプトから制御する方法を調べたり探したりしてました。
その中で自分でも採用しやすかったのが、AnimatorのnormalizedTimeを参照する方法です。
AnimationEventみたいに、たとえば「SEをこのタイミングでピンポイントに一回!」みたいな使い方をするのは(自分にはまだ)難しいんですが、「初めから」とか「終わったら」とか、「ここからは」みたいに、大まかなものを制御するのには向いてると感じます。Animatorのspeedを変更しても大丈夫な点も助かります。
表情の変更方法を学習
勝利演出の取っ掛かりとして、顔アップ用のカメラを設置。
『表情とカメラワークを自在に操れること』こそ演出のキモだと思い知らされてます。
センスもなければ知識もないっていう……(´・ω・`)
【顔カメラに関する思い付きメモ】
[OnEnable]で、どういう状況で呼び出されたのか判断。
カットインならカットイン、勝利なら勝利演出の角度や速度で分岐する、みたいな動きだと、1つのカメラで複数の役割果たせそう。
表情の変更をモーションに合わせるのは結構大変だったので、blenderの段階でくっつけられるならそうしたい……
その他の思い出
・勢いで掌打のモーションとエフェクトの作成に数日費やす。
→けど、ようやくお気に入りの3段目が出来たかもしれない。
・ジャンプキックを4時間くらいで作る。まずまず及第点の出来でホッとする。
・軸移動は、キーを押す強さを取る仕様にして、しばらく入力してないとダメ。みたいなのか、キーを離したときに判定(短く入力)みたいな閃サム仕様にするか、まだ悩み中。上下入力の特殊行動に関わってくる部分なので、テストプレイを重ねるしかないですね……
・ノックダウンUIにアニメーション
→うろ覚えの感覚で2時間ほど調整してゴリ押し。色々忘れてるので復習すること。
・トリガーの消去
Animator.ResetTrigger("");
・Animatorのtagから、アタック中とかダメージ中とか取れる気がする。上手く利用したい。
・ゲーム再生時のAnimatorの負荷は結構なものっぽいので、テストプレイで必要ない場合は閉じること。地味に重要。
・オブジェクトの簡単な移動方法のお勉強だけで頭がショートする。
【最後に自分への戒め】
・細かいこと拘ってたら終わらないよ(´・ω・`)
10月はカメラの基礎と移動システムの改修に、ほとんどの時間を費やした月でした。
いい加減キャラクターモデルを仮組から脱却するため、本格的に3Dモデリングに着手したり、ステージも含め、いわゆる「見た目」部分をちゃんと作り込まないといけませんね。
このあたりの勉強と試行錯誤は時間がかかるし、どのくらいまで出来るのか自分でも未知数なんですが、来月はその辺りの作業を進める……予定です。