射程 [HEX]
今回は予告通り射程の話。地形に関わらず 2 点間の距離を求めることで攻撃が可能か否かを判断する時に使う計算。ZOC(Zone Of Control) の判定も同様のはず。
今、ヘックスマップ上の 3,7 のセルから、射程が 3 となるセルを探すことを考える。当該セルと射程 3 の位置がわかるようにシェイプをはりつけておいた。若干縦長に見えるのは錯覚ではない。
「ヘックスの中心が射程内にあれば攻撃可能」という考え方をするのであれば、中心のセルの座標とターゲットのセルの座標から距離を求めて、それを判定するのが手っ取り早い方法だろう。
若干面倒なのが、「射程 3 の位置にだけ攻撃できる」ような間接攻撃専門のユニットの場合。図を見ると 3,1 の位置にあるセルは、その中心が円周上にあるのに対して、4,2 の位置のセルは円周の内側にいる。
実は、3,1、6,4、6,10、3,13、0,10、0,4 の 6 点は円周上にいる。そして残りの点は、この 6 点を結んでできる 六角形の辺の上に配置されているはず。
このヘックスマップを作るのに必要は計算はすべて整数演算で済ませている。まともに描画するならπや平方根のお世話になるはずなんだけど、ここでは背景にうっすらと見えているマス目の数だけで描画してしまっている。なにしろ、ヘックスマップを Excel の罫線で書いているのでこれ以外の単位を使うことができないからね...。
3,7 のセルから 3,1 のセルまでの距離は 12 マス分であり、これが射程 3 の円の半径ということになる。各セルまでの距離を求めて、この値以下になるようなら「射程 3 以内」と判断する方法がひとつ目。
射程 3 のセルだけを探すには、3,7 のセルから 3,3 のセルまでの距離を求め、これを射程 2 の半径とする。目的のセルは射程 3 の範囲に含まれ、且つ、射程 2 の範囲に含まれないものが該当する。
次回は、実際の計算方法について考察する予定。多分、土日は多分更新しないので、公開するのは月曜日になります。
コメント 0