対車両の予測射撃を煮詰めてみた。 しかし結果はふるわず。 自機を周回する150mm対徹甲装甲の車両をセメタリーキーパーの70発のカノンで倒せるかどうかなので実戦レベルにはほど遠い。 チップ数も無駄に25チップばかり使っている。
なんだかニナガワさんと同じタイミングで同じような事をしている。 ニナガワさんのブログは図による解説もあり、面白く分かりやすく参考になる。 私の方はまだまだなので、水面下でこっそり作ることにしよう。 数学及び物理の知識が無いので、お披露目出来る日が来ない気もするが。
ということで方向転換、脚付きの着地地点予測射撃を作ってみることにした。 これは実戦ですぐに投入出来るものをするがさんが公開されている。 するがさんのラスティネール「ハイランドパーク2」に着地地点予測射撃が搭載されており、ありがたいことに使いたければすぐに使える状態となっている。 しかし、私には並べられているチップを見ても何をしているのかいまいち分からない。 分からないなら自分にも分かるものを作ってみようというわけだ。 結果は「続きを読む」の中に。
すぐに予測射撃を使いたい方は「ハイランドパーク2」を参考にしましょう。
予測射撃にはいくつかやり方があるようなのだが、汎用性があって一番簡単そうなものを試してみる。 おそらくは真上に物を投げる場合を考えるのがお手軽だ。 投げ上げ運動は初期地点から最高点に達するまでの時間が ・初速度v0/重力定数g で求められる。 最高点から元の位置までは、働く力が重力のみなら全く同じ時間で落ちてくるので、 ・2*初速度v0/重力定数g でジャンプ開始から着地までの時間が得られる。 するがさんによると、CHPの処理上では重力が地球上の20倍として設定されているらしい。 実際に試してみる。 まず搭載率130%ぎりぎりのアラクネーを用意して真上にジャンプさせる。 インジケーターに表示される速度は205km/hで、着地までの時間は19フレーム。 ただ、着地の際には170km/hほどなのが気になる。 205km/hで投げ上げれば、着地までの時間は ・2*(((205*1000)/(60*60))/9.8) = 11.62秒 となり、フレーム数にして348.6となる。 実際は19フレームで着地しているので ・(2*(((205*1000)/(60*60))/9.8))*30/19 = 18.35 重力は18.35倍であるようだ。 するがさんのおっしゃっていた値とはずれがあるが、まずはこの値で試してみる。 地球上の重力定数9.8をかけると179.82となり、180と見てよさそうだ。 重力定数は秒を用いているのでフレームにするために30で割ると6。 よって、ジャンプを検知したら 2*初速度/6、1フレームのZ座標の差*30/3となり、 ・1フレームのZ座標の差*10 がジャンプ開始してから着地するまでのフレーム数となる。 この値に1フレーム間のターゲットの方向の変化量をかければ、撃つべき方向が決まる。
カウンタ射撃でジャンプ回避するアラクネーを撃ってみる。 ちゃんとうまくジャンプの着地点付近を狙った。 なんだか嬉しい。 よく見ると頭上を通り過ぎているようなので仰角を-0.4くらいにして調整してみる。 当たるには当たるのだが、なんだかちょっと外側に行きすぎている気がする。
ためしに通常射撃から狙撃にしてみると、ジャンプしたアラクネーの胴体に当たるのではなく、脚に当たる。 やはり重力20倍なのか、と思って重力定数を196にして1フレームのZ座標の差*30/3.27とする。 ・1フレームのZ座標の差*9.2 とするときれいに胴体に当たるようになった。 かなり嬉しかったのでアラクネーを破壊するまで眺めていた。
ということで予測射撃完成。 まずはカノンを1発乱射、ターゲットの方向とターゲットZ座標をとっておく。 また、射出中にジャンプしていればリターンする。 射出後、射撃を何かでキャンセルしてカノンを通常射撃1発とし、Z座標を監視して前に取った値と変化すればジャンプと見て計算を始める。
アラクネー相手なら有効射程は180mくらいだ。 それ以上の距離だと計算が終わる前にカノンを発射してしまうし、ちゃんと計算した方向に発射していても誤差の影響で当たらなくなる。 狙撃も試してみたが、通常射撃が射出まで13フレームに対して狙撃は18フレームかかるので直前でジャンプ回避されてしまう。 狙撃の射出がもう3フレームくらい早ければ距離によって使い分けられそうなのだが。 Z座標の差を見ているので特殊動作や格闘で回避されても予測射撃出来るのが強みだろうか。 ただ、0.1の違いでもジャンプと見なしてしまうので差が小さい場合は予測射撃しないようにする必要がありそうだ。 あとは仰角補正や砲身位置の補正などを考えれば、汎用的な予測射撃の完成だ。
|