気候も暖かくなってきて、また製作を再開する余裕も出てきたが、
特に外見上の変化はない。グラフィック周りには一切手を加えて
いないためだ。
今回はインファイト(接近戦)の問題についての個人的なメモ。
3Dアクションゲームの場合、多くの攻撃は射撃タイプの武器が
使われる。
まず、ロックを操作してバスター(ショット)で敵を倒す…
ゲームの基本的な部分はこれでいい。キックやドリルもできたら
いいが、完成を優先するなら後回しにすべき部分だ。
解決が面倒なのは接近戦だ。
シャルクルスなどの敵は弾を撃たずに突っ込んでくる。
ロックに近づいたらクロー攻撃、というのが普通だが、突き出した
クローに当たり判定をつけても最接近戦ではプレイヤーにうまく
当たらない場合がある。上のスクリーンショットのような位置関係
だと、クローはロックを超えて背後に突き出されるだろうし、
モーション上の直線移動がロックのモデルをうまくかすめてくれる
とは限らない。
とりあえずの対処としてクロー攻撃を体当たりの一種として処理
することにした。敵に当たったらプレイヤー側がダメージ。この方が
2D的で簡単だ。キャラクターの種別やアクションに優先順位を
つけることで逆にぶつかった敵を突き飛ばすこともできるようには
なっている。
次に取り組むことになったのはダウン状態。「突き飛ばす」部分だ。
これの面倒な部分は突き飛ばされている側はたいてい操作不能
の状態であり、そのまま相手の上に乗ったりすると当たり判定の
ハマリが起こる場合がある。
壁際でシャルクルスの上に落下で引っかかるロック。
現状ではシャルクルスが移動すればハマリは解消できるが、もし
これがCPUだったらかなり見苦しいシーンになるだろう。
そういえば空中ダウンのモーション製作も止まっているぞ…
また、シャルクルスは突進するので、移動量が大きいと突き飛ば
した相手にもう一度接触する、なんてことが発生する場合もある。
射撃戦ではあまり考えることのなかった、ダメージ後の無敵状態に
ついてもきちんと考える必要が出てきた。 体当たりとダメージを
混ぜてしまうと距離を解決する余裕が損なわれるのだろうか。
そもそも接近攻撃の実現自体は単純だ。バーチャロンのように
相手にオートで接近、一定距離まで近づいたら攻撃モーション
始動、特定のモーションフレームで前方に判定空間が発生
(空間に入っているものがダメージ)、でいいような気もする。
何年も前にそういうの作ったような…
来月はちょっと古いやり方に戻してみよう。
他に進めていたことはヒットストップ。これも作る余裕がなかった
ので接近攻撃のヒット時にポーズ画面と似た処理を行うだけに
している。この後ヒットエフェクトだけストップしないように変更を
加えるが、インファイト用ヒットエフェクトはダミーすらない…
それでもヒットストップはゲーム製作途中の段階でもヒットが発生
しているかどうかを確認しやすいので多少は役に立っている。
こんな感じでプレイフィールの改善はまだまだ遠いかもしれない。