Como implemento a rolagem de paralaxe em 2D?


Respostas:


20

Divida a posição de cada camada pela "distância" que você deseja que ela tenha da câmera.

Por exemplo: Crie algumas variáveis ​​para representar a posição da câmera cameraXe cameraY. Defina-os para igualar a posição do seu personagem, possivelmente adicionando um pouco mais na direção do movimento.

A camada principal seria posicionada apenas em

mainLayer.x = -cameraX;

a camada do meio em algo como

middleLayer.x = -cameraX * 0.5;

e a camada mais distante em

farLayer.x = -cameraX * 0.2;

Mude as constantes conforme necessário.


3
O que Iain disse, além de pegar o "fator de paralaxe" (1, 0,5 e 0,2 no código de Iain) e torná-lo um parâmetro que descreve minhas camadas, para que eu possa ajustar a sutileza da paralaxe (ou em tempo de execução).
Troy Gilbert

6

Basicamente, você deseja que os objetos se movam mais rapidamente, quanto mais próximos eles estiverem da 'câmera'. Como você implementa isso é com você.

Atribuo uma profundidade a cada uma das minhas camadas e, em seguida, ao rolar a cena, divido esse rolo pela profundidade da camada, para que as camadas mais distantes se movam mais devagar.


5

Uma camada que está "mais para trás" precisaria rolar a uma fração da velocidade da camada de primeiro plano. Metade da velocidade implica o dobro da distância. Outros efeitos, como tingir para simular nevoeiro, etc, também podem aumentar a ilusão.


1

A melhor maneira de fazer isso é simplesmente renderizar sprites como quads de outdoor em 3D. A "jogabilidade" pode acontecer em um único plano, enquanto o plano de fundo e o primeiro plano podem ser posicionados mais perto ou mais longe no espaço 3D. Dessa forma, o efeito de paralaxe é tratado para você sem que você precise fazer nenhuma codificação especial :-)


3
Se você fizer isso, precisará escalar seus quadriláteros distantes para compensar a escala da distância ou configurar uma matriz de projeção que não aplique nenhuma perspectiva. Pode ser mais fácil traduzir os quadríceps você mesmo.
116810

0

Faça a rolagem da camada inferior subtraindo de sua posição, desenhe a camada intermediária normalmente e faça a rolagem da camada superior na velocidade da camada inferior dividida por dois.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.