2D ゲーム マップ タイルのチャンクを生成するシステムがあります。チャンクは 16x16 タイル、タイルは 25x25 です。
チャンクには、0,0、0,1 などの独自の座標が与えられます。タイルは、どのチャンクにあるかに基づいて、ワールド内の座標を決定します。チャンク/タイルがすべて適切な表示を示していることを確認しました。 x/y 座標。
私の問題は、それらを画面座標に変換することです。前の質問で、誰かが次の使用を推奨しました:
(worldX * tileWidth) % viewport_width
各タイルの x/y はこの計算によって実行され、画面の x/y 座標が返されます。
これは、ビューポート内に収まるタイルには機能しますが、画面外のものについては画面の x/y 位置の計算をリセットします。
私のマップでは、プレーヤーの周囲の半径内にタイルのチャンクをロードして、内側のタイルの一部が画面外になるようにします (それらが動き回るまで、画面上のタイルの位置が移動します)。
画面外になるタイルでテストを試みました。
Tile's x coord: 41
41 * 25 = 1025
Game window: 1024
1025 % 1024 = 1
これは、タイル x (画面 0,0 がマップ 0,0 にある場合、画面の右側のすぐ外の x:1025 にあるはずです) が実際には x:1 にあり、上部に表示されることを意味します。 -左。
これを適切に処理する方法が思いつきません。tileX * tileWidth
「最初の画面位置」を決定し、オフセットを使用して画面に表示する方法を決定する必要があるようです。しかし、何のオフセットですか?
更新: プレイヤーが移動したときに x/y オフセット値を既に保存しているので、マップを移動する方法を知っています。これらの値を現在のオフセットとして使用できます。誰かがゲームを保存した場合、単純にそれらを保存して再利用できます。方程式は必要ありません。累積オフセットを保存するだけで済みます。