主にパズルゲームや背景の当たり判定に使います。
考え方
二次元配列をマップと見立てます。0 は何も無い状態、 1 は壁があるとします。
HitTable = [
[ 1,1,1,0,1 ],
[ 1,1,0,0,1 ],
[ 1,0,0,0,1 ],
[ 0,0,0,0,1 ],
[ 0,0,0,1,1 ]
];
|
自分の位置を[2][2]とします。x = 2, y = 2
HitTable = [
[ 1,1,1,0,1 ],
[ 1,1,0,0,1 ],
[ 1,0,0,0,1 ],
[ 0,0,0,0,1 ],
[ 0,0,0,1,1 ]
];
|
ここから上に1つ移動したいと思います。
1つ上の配列は[1][2] なので配列の中身をチェックします。0 なので移動できます。(x = 2 , y = 1)
HitTable = [
[ 1,1,1,0,1 ],
[ 1,1,0,0,1 ],
[ 1,0,0,0,1 ],
[ 0,0,0,0,1 ],
[ 0,0,0,1,1 ]
];
|
さらに左に1つ移動したいと思います。
一つ左の配列は[1][1] なので配列の中身をチェックします。1 なので移動できません。(x = 2 , y = 1)
HitTable = [
[ 1,1,1,0,1 ],
[ 1,1,0,0,1 ],
[ 1,0,0,0,1 ],
[ 0,0,0,0,1 ],
[ 0,0,0,1,1 ]
];
|
こんな感じでマスを自分の座標と考えて次に移動したいマスの配列にデータがあるか見ながら移動します。
この当たり判定を使うメリットは高速で当たり判定を取る事ができる点です。
どんなに広大なマップでも、処理の負荷は同じです。現在の位置に当たる配列の中身を 1 回見るだけでわかるため非常に高速な処理が出来ます。
そのかわりデメリットとしてマップ用の二次元配列を用意しないといけないためメモリを喰う事になります。
|