機体の周囲を定期的にチェックし、最も危険が少ない方向に移動する、というルーチンを組んでみた。
使用するチップ領域は、各方向の場外チェック、敵機体チェック、地雷チェックと数値加算で一つの方向につき6チップ。 さらに一番値の大きい変数を得るために20チップほどかかっている。 最大値取得は他にうまいやりかたがある気がする。 ともかく、合計で45チップほど使用、うまくいけばサブに押し込めるもののかかる時間が6フレームから9フレーム、サブ出入りで+2フレームとちょっと時間がかかりすぎる。 時間がかかる点は急速移動後に毎回サブルーチンを呼び出せばいいとして、問題は精度の低さだ。 敵機体の目の前に飛び出すことは少なくなった気がするものの、それ以上に飛翔物に対する反応速度が鈍っていることを感じる。 処理を入れていなくても反応速度低下とあわせると変わりない気がする。 精度を上げようと思えばさらに使うチップが増えそうだし、そうすると反応速度が遅くなるだろうし、悪循環なのでこの方法は諦めることにする。
他の方法を考えていて、暫定的に壁スイッチの条件に敵機体と地雷の有無を加えたものがだいぶ良い感じになった。 あれこれ条件を考えて回避するよりもシンプルにした方が有効な場合もあるということか。
チァーイカの機雷回避の時もそうだった気がする。 機雷の有無によって色々と設定したが、40mm以内に機雷があれば急速移動で回避、前方60mm60度に機雷があれば急速旋回としたものが一番うまく避けられた。
現在、敵機体に近寄らないこと前提で組んでいるが、接近することに関しては特に対策せず、接近時の挙動を練るという方法もあるだろうか。 接近した敵機体の向きで逃亡と攻撃を分ける。 接近時に敵機体の方向を向くようにすれば、左右どちらに移動しても敵機体から離れられるはずだ。 2機体から囲まれたら厳しいのでその場合は一目散に逃げる。
まあ、片方だけでなく両方併用した方が効果が高いだろう。 明日からは敵機体の目の前に飛び出してしまった時の処理も作っていこう。
|