1

グリッドベースの 2D トップ ビュー ボード ゲームであるゲーム im 建物の自家製の視線を作ろうとしています。ボードには 2 次元配列の div があり、すべて黒で、プレーヤーが廊下にいる場合は透明になります。これもオブジェクトを含む 2 次元配列です。廊下にはさまざまなブロックがあり、プレーヤーがいる廊下に表示された場合に div が透明にならないように考慮する必要があります。

だから私は、プレイヤーが x、y 値で配置されている特定の廊下でオブジェクトの配列を並べ替えるという考えを持っています。

corridors[i].sort(
    function(a)
    {
        if(a.y > playerObj.position.y && a.x > playerObj.position.x) return 1;
        if(a.y < playerObj.position.y && a.x < playerObj.position.x) return -1;
        return 0;
    });

しかし、これはうまくいかないようです。div の背景色の透明への変更は、配列の最初のインデックスからまだ開始されています。廊下のプレーヤーの位置から開始し、次のように外側に向かって動作するようにします。

O は単純なタイル、P はプレイヤー、X は透明にしたばかりのタイルです。

うおおおおおおおおおおお

うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお

OOOOOOOOOOXPXOOOOOO

OOOOOOOOOXXPXOOOOOO

しかし、このシナリオが機能するには、配列を正しくソートする方法を見つける必要があります。ネットで見た例にはパラメータ a と b がありますが、外部変数を使用することはできませんか? おそらく、プレーヤーの位置を新しいオブジェクトとして作成し、それを配列にプッシュしてから、配列をソートする必要がありますか?

4

1 に答える 1