Tôi dường như không thể tìm thấy câu trả lời cho câu hỏi này. Tôi có một bản đồ gạch hex. Tôi muốn thực hiện cuộn.
Mã hiện tại:
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);
}
}
}
Mã tôi đã viết cho đến nay chỉ xử lý chuyển động X. Nó không hoạt động theo cách nó nên làm. Nếu bạn nhìn vào ví dụ của tôi trên jsfiddle.net bên dưới, bạn sẽ thấy rằng khi di chuyển sang phải, khi bạn đến ô lục giác tiếp theo, có một vấn đề với vị trí X và các tính toán đã xảy ra.
Có vẻ như đó là một chút đơn giản của toán học bị thiếu. Thật không may, tôi đã không thể tìm thấy một ví dụ bao gồm cuộn.
Đảm bảo không có thanh cuộn ngang sau đó thử di chuyển sang phải bằng cách sử dụng -> mũi tên phải trên bàn phím. Bạn sẽ thấy vấn đề khi bạn đạt đến cuối của ô đầu tiên.
Xin lỗi về mã khủng khiếp, tôi đang học!
Chúc mừng