Como eu implementaria uma estrada sem fim que o jogador percorre?

Respostas:

16

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 .

  1. 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.
  2. 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.

insira a descrição da imagem aqui

David Gouveia
fonte
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.

Kitt Basch
fonte
0

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.

Stefan Majewsky
fonte
2
Isso realmente não funciona, pois sua imagem é perspectiva. Ele precisaria de imagens diferentes para jogar como animação.
Bobby