予測格闘改良

まだちょっと調整中ですが、試作版で動画撮ってみました。

旧バージョンの予測格闘の最大の問題点は、
「格闘ルーチン1周(5f)に1回しか予測処理を行なっていない」という点でした。
加速蛇は最速で1f辺り3.5m近く前進してしまうため、
最大で14mほどの誤差が発生してしまうことになります。

かと言って、毎フレーム予測処理をしていては他に何もできません。
というわけで、予測処理でターゲットに格闘を仕掛けるべきと思われるフレーム数を計算し、
予測処理を行ったフレーム以後では予測からの経過フレーム数を引いて
格闘判断を行うようにしました。
これなら毎f予測結果を使用して格闘判断が可能になります。
もちろん、予測処理から時間が経過するごとに精度は落ちていきますが。
(上げた動画ではこの辺の詰めが甘く、フレーム数ではなく距離ベースでの計算を行なっています)
また、ターゲットのジャンプ状態を参照し、ターゲットが一定の高さ以上だったり
上昇中だったりする場合は格闘を行わないようにしています。
予測がややアバウトな点については、格闘開始も定期的に予測処理を走らせ、
命中が見込めないと判断した場合は格闘を中止して接近モードに戻ることでフォローしています。

また、旧バージョンでは格闘命中後のガードキャンセルについても
2fに1回しかチェックしていなかったため、毎フレームチェックするように変更しました。
ガードキャンセルは被弾チェックを利用するため、ターゲット被弾中は実行チェックができませんが
格闘開始前にしかガードキャンセル可能かどうかの判断をしていなかった旧バージョンと違い、
格闘中も毎フレーム被弾状態をチェックしてガードキャンセルフラグを立て直すことにより、
可能な限りガードキャンセルを行うよう修正しています。

予測格闘周りの残課題としては、格闘・接近・ターゲット正面捕捉の各モード間の移行に
若干時間がかかっているので最速化することと、
どう動けばターゲットを格闘範囲に最速でおさめられるか検討すること、でしょうか。