2
レイキャスティング技術を使用してプロジェクトを開始しましたGitHub Project レイの長さ(プレイヤーから壁までの距離)を見つけるには、1だけ増分します。しかし、それにはいくつかの問題があり、時間がかかり、不正確な&はテクスチャリングには難しいでしょう。ddaアルゴリズム - レイキャスティング
私はdaでアルゴリズムを実装しようとしましたが、これはちょうど1だけ増分されません - >彼はグリッドを通り、正確な位置を返します。
http://www.geeksforgeeks.org/dda-line-generation-algorithm-computer-graphics/
ことまたは任意のヒントを持つ人の経験を持っていますか?
ませアルゴリズムの道ません:
for(let resolution = 0; resolution < display.width/2; resolution++){ //every 2nd px gets scanned
let ray = this.pov + (-this.fov/2 + this.fov/(display.width/2) * resolution);
let distance = 0, hit = false;
/*ugly way of raycasting!*/
do{
let x = this.x + distance * Math.cos(ray * (Math.PI/180));
let y = this.y + distance * Math.sin(ray * (Math.PI/180));
if(map[Math.floor(x/block)][Math.floor(y/block)]){
distance = Math.sqrt(Math.pow(this.x - x, 2) + Math.pow(this.y - y, 2));
hit = true
}
distance += 1;
}while(!hit);
distance = convert/distance;
canvas.fillStyle = "#fff";
canvas.fillRect(resolution * 2, display.height/2 - distance/2, 2, distance);
}
線ライン/プレーン/三角/クワッド交差点は 'O(1)'操作式を導出(またはそれをグーグル)だけを使用することであるようにボクセル化アルゴリズムを使用しますこれにはループが必要ありません。 – Spektre