3Dダンジョンを作ってみたい
front系苦手なのですがまぁ「3Dダンジョン作りたいなぁ」という欲求は以前からガチガチに強めなので(笑
とりあえず、試行錯誤を記録してみようかなぁ、と。
一応想定としては
・一端、JavaScriptのcanvasでワイヤーフレームの3Dダンジョンを作る
あたりが一端のゴールでふ。
んで。
とりあえず「3Dダンジョン書く」のに、マップデータは用意するとして、それを「読み込んで」「ワイヤー書く」必要があるので。
今回はまず「読み込む」あたりを。
こんな感じで、●が自分の位置想定で「n歩先」まで見れると仮定して、こんなxyの座標になると思うのです。
で「これ、計算できないかなぁ?」と思って、ちょりっと思考錯誤して出来るようになったので、メモかてがて。
調査込みなので「本当は関数なりメソッドなりにする」んだけど、その手前のコードをそのまま載せます。
<?php declare(strict_types=1); error_reporting(-1); // $data = []; // 迷路で「どのマスまで見るか」 // 配列は[x軸, y軸] for($i = 1; $i < 4; ++$i) { // $awk = []; // 0ので重複が出るから「一端keyに入れる」「後でkeysで取り出す」にする /* // x軸 for($x = ($i * -1); $x <= $i; ++$x) { $awk["{$x}, {$i}"] = true; } // y軸 $x = $i; $xx = $i * -1; for($y = 0; $y <= $i; ++$y) { $awk["{$x}, {$y}"] = true; $awk["{$xx}, {$y}"] = true; } */ // loopをまとめて for($z = 0; $z <= $i; ++$z) { // x軸 $x = $z; $xx = $z * -1; $awk["{$x}, {$i}"] = true; $awk["{$xx}, {$i}"] = true; // y軸 $x = $i; $xx = $i * -1; $y = $z; $awk["{$x}, {$y}"] = true; $awk["{$xx}, {$y}"] = true; } // $awk = array_keys($awk); sort($awk); // 見やすいように一端 $data[$i] = $awk; } var_dump($data);
さて次は「Mapデータの持ち方」と、そしたら「レンダリング」かなぁ。