Eu desenharia um único quad texturizado no chão (ou seja, deitado no plano XZ), do tamanho da área visível, e depois brincava com as coordenadas de textura dos vértices (com o modo de endereçamento de textura definido para quebrar ) para cuide automaticamente da repetição e rolagem da textura .
Para repetição, em vez de definir sua coordenada vertical da textura de [0 a 1], defina-a de [0 a N] onde N é o número de vezes que você deseja que a textura seja repetida. Ajuste esse valor dependendo da altura do seu quad em comparação com a altura da sua textura.
Para rolagem , basta rolar a coordenada vertical da textura, para que, em vez de variar de [0 a N], ela varie de [inc a N + inc], com o valor de inc sendo incrementado ou diminuindo cada quadro. De tempos em tempos, envolvia inc de volta à origem, a fim de impedir o estouro / o estouro.
EDIT Eu apenas tentei implementar isso exatamente como eu descrevi (mas no XNA) e funcionou muito bem. Veja este vídeo da demonstração. Código fonte aqui para os interessados.
Por exemplo, com N igual a 3, você obteria algo como a imagem abaixo (eu pintei a seção do meio em vermelho para que você possa ver onde a repetição ocorre). Então, simplesmente alterar o valor de inc faria a estrada rolar em uma direção ou outra, dependendo se você a incrementou ou diminuiu.
A mesma técnica pode ser usada para falsificar a animação de threads de tanque. Claro, ele não poderá ser usado se você modelar todos os segmentos da cadeia ...
Exilyth
1
Se você quiser fazer uma estrada interminável "de verdade", crie três superfícies e faça com que elas circulem à medida que cada superfície se move para fora da vista. Coloque as superfícies de ponta a ponta no espaço do mundo e mova-as todas na direção da câmera. À medida que a extremidade mais próxima se afasta da câmera, redefina sua posição no final da superfície mais distante.
Se você deseja implementá-lo como um sprite com a ilusão de movimento, é necessário criar várias texturas diferentes, que devem ser algo como:
À medida que a vista avança, faça um loop pelas texturas em ordem.
Repetir a imagem é uma boa ideia. Descubra quantas repetições precisam estar visíveis na tela e desenhe a imagem esse número de vezes. À medida que a estrada avança, haverá um ponto em que uma imagem estará completamente atrás da câmera e, portanto, invisível. Nesse ponto, você deseja mover a imagem de trás dos pés para o extremo da faixa finita de imagem.
Enquanto estamos nisso, você obterá o melhor efeito imitando a perspectiva instável de um homem correndo. Grave um filme de você correndo da perspectiva de seus olhos e estude-o.
Se você quiser fazer uma estrada interminável "de verdade", crie três superfícies e faça com que elas circulem à medida que cada superfície se move para fora da vista. Coloque as superfícies de ponta a ponta no espaço do mundo e mova-as todas na direção da câmera. À medida que a extremidade mais próxima se afasta da câmera, redefina sua posição no final da superfície mais distante.
Se você deseja implementá-lo como um sprite com a ilusão de movimento, é necessário criar várias texturas diferentes, que devem ser algo como:
À medida que a vista avança, faça um loop pelas texturas em ordem.
fonte
Repetir a imagem é uma boa ideia. Descubra quantas repetições precisam estar visíveis na tela e desenhe a imagem esse número de vezes. À medida que a estrada avança, haverá um ponto em que uma imagem estará completamente atrás da câmera e, portanto, invisível. Nesse ponto, você deseja mover a imagem de trás dos pés para o extremo da faixa finita de imagem.
Enquanto estamos nisso, você obterá o melhor efeito imitando a perspectiva instável de um homem correndo. Grave um filme de você correndo da perspectiva de seus olhos e estude-o.
fonte