視界内に表示される壁を把握して実際に壁を描画する際、壁の見た目上の重なりを表現するために描画する順序を工夫する必要があります。
工夫と言っても難しいことではなく遠い壁から描画して、先に描画した壁が後に描画した壁に上書きされることを利用します。
奥の壁の一部が手前の壁に隠れる場合に、隠れる部分の描画範囲の計算などの特別な考慮をする必要なく壁の遠近を表現出来ます。
但し、同じ距離の壁の内横壁をセットで描画する場合、より外側から描画する必要があります。
壁の描画順の例
・遠距離→中距離→近距離→側の順で描画します。
・同距離の中で、遠距離は横壁を描画しないので順不同、他は端から順に描画します。
※中距離の描画順は上記の例以外に、左2→左1→右2→右1→0でも問題ありません。
サンプルマップを使用して壁が上書きされて一部(または全部)が隠れる様子を確認します。
サンプルマップ:自分の位置=(7,3)&上向き
※描画のロジックの一部をコメントアウトして手前の壁が表示されない様に調整しながら確認します。
1.遠距離のみ(赤枠の範囲)表示
→遠距離の正面壁のみ表示されます。
2.遠距離+中距離を表示
→左側の遠距離の壁が中距離の壁に上書きされて見えなくなります。
3.遠距離+中距離+近距離を表示
→遠距離と中距離の壁全てが近距離の壁に上書きされて見えなくなります。
4.遠距離+中距離+近距離+側を表示
→右側の近距離の壁が側の壁に上書きされて見えなくなります。
この様に遠くの壁から順に描画することで、描画範囲の細かい調整等をすることなく遠くの壁が隠れて見えないことを表現出来ます。
但し、例えば見える範囲のみマッピングしていく様な機能を追加する場合にはどこが見えなくなるのかを正確に把握する必要があるので、壁の一部分だけ見えている場合の描画が楽になる程度になります。
以上です。