Parece que não consigo encontrar uma resposta para essa pergunta. Eu tenho um mapa de blocos hexadecimais. Desejo implementar a rolagem.
Código atualmente:
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);
}
}
}
O código que escrevi até agora apenas lida com o movimento X. Ainda não funciona como deveria. Se você olhar para o meu exemplo no jsfiddle.net abaixo, verá que ao mover para a direita, quando chegar ao próximo bloco hexagonal, há um problema com a posição X e os cálculos que ocorreram.
Parece que está faltando um pouco de matemática. Infelizmente, não consegui encontrar um exemplo que inclua rolagem ainda.
Verifique se não há barra de rolagem horizontal e tente mover para a direita usando a seta -> direita no teclado. Você verá o problema ao chegar ao final do primeiro bloco.
Desculpas pelo código horrível, estou aprendendo!
Felicidades