¿Cómo implemento el desplazamiento de paralaje en 2D?

Respuestas:

20

Divida la posición de cada capa por la "distancia" que desea que tenga desde la cámara.

Por ejemplo: cree un par de variables para representar la posición de la cámara, cameraXy cameraY. Ajústelos para que sean iguales a la posición de su personaje, posiblemente agregando un poco más en la dirección del movimiento.

La capa principal solo se colocaría en

mainLayer.x = -cameraX;

la capa media en algo así

middleLayer.x = -cameraX * 0.5;

y la capa lejana en

farLayer.x = -cameraX * 0.2;

Cambie las constantes según sea necesario.

Iain
fuente
3
Lo que dijo Iain, además, tomo el "factor de paralaje" (1, 0.5 y 0.2 en el código de Iain) y lo convierto en un parámetro que describe mis capas, de esa manera puedo ajustar la sutileza de paralaje (o en tiempo de ejecución).
Troy Gilbert
6

Básicamente, desea que los objetos se muevan más rápido, cuanto más cerca estén de la 'cámara'. Cómo implementar eso depende de usted.

Asigno una profundidad a cada una de mis capas, y luego a medida que me desplazo por la escena, para cada capa divido ese desplazamiento por la profundidad de la capa, de modo que las capas que están más lejos se mueven más lentamente.

Kevin Laity
fuente
5

Una capa que está "más atrás" necesitaría desplazarse a una fracción de la velocidad de la capa de primer plano. La mitad de la velocidad implica el doble de la distancia. Otros efectos, como el teñido para simular la niebla, etc., también pueden aumentar la ilusión.

Karantza
fuente
1

La mejor manera de hacer esto es simplemente renderizar sprites como quads billboarded en 3D. La "jugabilidad" puede ocurrir en un solo plano, mientras que el fondo y el primer plano se pueden colocar más cerca o más lejos en el espacio 3D. De esa manera, el efecto de paralaje se maneja por usted sin que tenga que hacer ninguna codificación especial :-)

Joel Martinez
fuente
3
Si hace eso, debe escalar sus quads distantes para compensar la escala de distancia o configurar una matriz de proyección que no aplique ninguna perspectiva. Puede que sea más fácil traducir los quads usted mismo.
munificent
0

Haga que la capa inferior se desplace restando de su posición, dibuje la capa intermedia como de costumbre y haga que la capa superior se desplace a la velocidad de la capa inferior dividida por dos.

Sam
fuente