どの座標が「占有」されているかを格納するために使用される座標の配列に変換するオブジェクトがあります。
私はそれが機能していると思ったが、console.logを介してさらに調べたところ、アレイにはかなりの数の結果がありません。
つまり、これは基本的に私のオブジェクトです。
var sdata = {"4":{"7":["1","7","3","3"]}};
つまり、これは次のとおりです。
var sdata = {"X":{"Y":["ID","ID","Width","Height"]}
これらは無関係であるため、このIDは無視してください...しかし、このデータを使用して、タイルの寸法の幅と高さに関連するXとY+追加のXとYの座標を取得しようとしています。
4:7のオブジェクトが3 x 3次元であるとすると、これらの9つのグリッド参照が存在することになります。
[4:7], [5:7], [6,7]
[4:8], [5:8], [6,8]
[4:9], [5:9], [6:9]
したがって、座標を作成する私の関数は次のとおりです。
function populate_collisions() {
for (var X in sdata) {
X = parseInt(X);
for (var Y in sdata[X]) {
Y = parseInt(Y);
width = parseInt(sdata[X][Y][2]);
height = parseInt(sdata[X][Y][3]);
for (i=X; i!= X+width; i++) {
if( typeof gcollision[i] == 'undefined' ) {
gcollision[i] = new Array();
}
gcollision[i][Y] = 1
for (j=Y; j!=Y+height; j++) {
if( typeof gcollision[X] == 'undefined' ){
gcollision[X] = new Array();
}
gcollision[X][j] = 1
}
}
}
}
}
しかし、私の配列に対してこの結果を取得しているため、私のロジックは間違っている必要があります。
[4] [7] = 1
[4] [8] = 1
[4] [9] = 1
[5] [7] = 1
[6] [7] = 1
追加のデータが欠落している理由はありますか?