Um scroller é bastante simples, uma "viewport virtual" que empurra novos blocos / objetos na direção em que você está rolando.
Um exemplo simples para ver isso é criar uma marca de seleção simples de 1 linha (textoscroller).
Vamos, por exemplo, dizer que temos uma linha com 20 caracteres / letras / caracteres.
Nós os colocamos em uma string / array como:
String viewport = "....................";
String text = "Hello World (how original!)";
Agora, se imprimirmos isso, veremos apenas os "pontos".
Console.WriteLine(viewport);
Agora, para rolar, precisamos fazer os pontos irem para a esquerda. Para que possamos ler o texto chegando.
Para que isso aconteça, removemos a primeira letra da esquerda e adicionamos a próxima a ser mostrada da direita.
então dizemos:
viewport = viewport.Substring(2);
para levar a 2ª letra e encaminhar, o que é igual ao restante do visor de conteúdo atual.
Agora, a janela de visualização tem 1 caractere / letra para restringir, portanto, precisamos adicionar o próximo caractere do scroller. Portanto, precisamos de uma variável para controlar onde estamos no texto de rolagem.
// place this outside your scroll loop
int scrollPos =0;
Agora, com este índice, podemos encontrar o próximo caractere.
char next = text.substring(scrollPos,1);
Em seguida, adicione isso à viewport.
viewport += next;
E aumente sua posição no texto de rolagem.
scrollPos++;
Agora, rolamos o conteúdo 1 caractere restante.
Continue fazendo isso repetidamente, e parecerá que o "Hello World" está rolando pela sua janela de visualização.
Agora imagine esse truque em todas as direções. Em vez de caracteres, você usa seus próprios "ladrilhos". Em segundo lugar, para facilitar o processo, você também adiciona uma "rolagem de pixels" dentro do seu rolador ou apenas multiplica seus scrollpos para simplificar. Então, quando você precisar descobrir qual bloco adicionar em seguida, divida seus scrollpos atuais com a largura do bloco e saberá se precisa mover o conteúdo da rolagem da viewport em qualquer direção.
se você precisar rolar matrizes (com dados de bloco / bloco), poderá fazê-lo com simples for-loops.
rolagem esquerda
for (int pos=0;pos<viewwidth;pos++)
{
tilemap[pos] = tilemap[pos+1];
}
tilemap[width] = newTile; // from maparray.
Ufa
Essa foi uma longa explicação. Você entende meu argumento aqui ou precisa de mais explicações?