これに対する答えを見つけることができないようです。ヘックスタイルのマップがあります。スクロールを実装したい。
現在のコード:
drawTilemap = function() {
actualX = Math.floor(viewportX / hexWidth);
actualY = Math.floor(viewportY / hexHeight);
offsetX = -(viewportX - (actualX * hexWidth));
offsetY = -(viewportY - (actualY * hexHeight));
for(i = 0; i < (10); i++)
{
for(j = 0; j < 10; j++)
{
if(i % 2 == 0) {
x = (hexOffsetX * i) + offsetX;
y = j * sourceHeight;
} else {
x = (hexOffsetX * i) + offsetX;
y = hexOffsetY + (j * sourceHeight);
}
var tileselected = mapone[actualX + i][j];
drawTile(x, y, tileselected);
}
}
}
これまでに作成したコードは、Xの動きのみを処理します。それはまだそれがすべき方法で動作しません。下のjsfiddle.netで私の例を見ると、右に移動したときに次の16進タイルに到達すると、X位置と実行された計算に問題があることがわかります。
不足しているのは単純な数学のようです。残念ながら、まだスクロールを含む例を見つけることができませんでした。
水平スクロールバーがないことを確認してから、キーボードの->右矢印を使用して右に移動してみてください。最初のタイルの最後に到達すると、問題が発生します。
恐ろしいコードの謝罪、私は学んでいます!
乾杯
私はなんとかこれを見つけました。xnaresources.com/default.asp?page=Tutorial:TileEngineSeries:3残念ながら、正しく表示されますが、正しくない座標が使用されています。あなたが絵を見るならば、私はこれらが16進の数学でうまくいくとは思いません。
—
Chris Evans、
私はコードをさらに調整しましたが、重要なビットでよりクリーンで理解しやすくなっています。完全な例はここにあります:jsfiddle.net/wg45T/2/embedded/resultとコードはここにあります:jsfiddle.net/wg45T/2これでスクロールが正常に行われ、マップなどが再作成されます。問題は、古いタイルが削除されたときに次のタイルの位置を維持しないことです。右にスクロールして確認してください。
—
Chris Evans
答えは見つかりましたが、まだ投稿できません。制限時間が終了するとアップロードされます。
—
Chris Evans、