# 壁があったら左右に進める位置を探す

この左画面を左クリックすれば以下の緑字のスクリプト全部がクリップボードにコピーされるので、右の画面の緑色の矢印の右側に置換(選択して貼り付け)してください。

    		var delta = [0,15,-15,30,-30,45,-45,60,-60,75,-75,90,-90];
    		for ( var i = 0; i < delta.length; i++ )
    		{
    			var radian = degreeToRadian(_rotate+delta[i]);
    			var x = _lookAt.x + Math.sin(radian) * 50;
    			var z = _lookAt.z + Math.cos(radian) * 50;
    			if ( _map[~~(z/WALL_SIZE)*MAP_WIDTH+~~(x/WALL_SIZE)] == 1 )
    			{
    				_lookAt.x += Math.sin(radian) * 300 * _elapsed;
    				_lookAt.z += Math.cos(radian) * 300 * _elapsed;
    				break;
    			}
    		}

では「制御」→「実行」メニューを実行してください。
「W」キーで前進し、さらに壁にぶつかっても前進しました！
「S」キーで後退も同じようにプログラミングすればできますね。
deltaで現在のプレイヤーの向きに加算減算する増分を配列にしてますね。
forループで「degreeToRadian」に渡す引数をプレイヤーの向き「_rotate」に増分「delta[i]」を徐々に大きく角度を加算減算していき、壁があった場合左右に進行方向を変えて進める方向を探します。
これで完成ですが、「VixarStudioHTML5\Dungeon\index.html」ファイルを「Dungeon.html」などと別名で保存し、保存した「Dungeon.html」で、背景色を黒にしたり、後退もできるようにしたり、敵を出現させたり、梯子をつけて地下の階へ移動したりしてみてください。

### ホームへ