¿Cómo visualizo capas de paralaje en un editor de niveles?

9

Estoy haciendo un juego 2D en Unity, pero esto se aplicaría a cualquier motor de juego 2D.

Si implemento paralaje multiplano con cámaras ortográficas, es difícil diseñar los sprites de la capa de fondo y saber dónde se alinearán con los sprites en otras capas.

Mi primer instinto fue usar varias cámaras, una para cada capa, y reducir la velocidad de movimiento de las cámaras para las capas de fondo. Esto evita tener que mover todos los sprites de fondo en cada cuadro. El problema es que una capa que se mueve a media velocidad ocupará la mitad del espacio de la capa principal cuando se ve en el editor. Por lo tanto, es difícil saber dónde colocar los sprites mientras diseñas el juego. El problema empeora exponencialmente a medida que aumenta el número de capas.

¿Cómo puedo evitar esto? Intenté escalar inversamente las capas según las velocidades de movimiento previstas mientras trabajaba con ellas en el editor. Eso coloca a todos los sprites de fondo en las ubicaciones correctas en relación con la capa principal, pero están terriblemente distorsionados.

¿Necesito simplemente asimilarlo y cambiar constantemente entre el editor y el juego en ejecución para probar los fondos de paralaje?

TenFour04
fuente
44
Cuando hice un juego así, lo hice para que pudieras arrastrar alrededor de la cámara en el editor y pudieras ver cómo funcionaba el paralaje. Sin embargo, no estoy seguro de cómo hacer específicamente algo así en Unity.
Tetrad

Respuestas:

1

No estoy familiarizado con Unity, por lo que no puedo ayudarlo con detalles, pero parece que lo que necesita es implementar un medio GUI para ajustar esos valores durante el tiempo de ejecución con, por ejemplo, un conjunto de controles deslizantes o campos numéricos. Sería bastante simple implementar campos para alterar los valores que esté determinando (escala, velocidad, etc.) durante el tiempo de ejecución, lo que le proporciona información inmediata. Para la ubicación, puede usar campos o ubicación manual con arrastrar con un clic (que puede ser un poco más difícil de implementar, pero mucho más intuitivo).

Esto le brinda un control completo sin compilar y ejecutar el código para cada pequeña fracción de un cambio. Cuando finalmente llegue a una apariencia con la que esté feliz, use esos valores en su lista de constantes. Si esto es demasiado desalentador debido a la cantidad de variables que está editando (por ejemplo, numerosas ubicaciones de sprites en numerosos niveles), me gustaría implementarlo en un editor de niveles, imagino, con la misma funcionalidad de ajuste manual pero con el resultado de crear y almacenar los datos ajustados.

Attackfarm
fuente
Sí, parece que usar un editor de niveles es la mejor manera de hacerlo, ya sea codificando el tuyo, o en mi caso con Unity, configurándolo para que funcione con el editor existente. Codifiqué mi configuración de paralaje con un objeto de cámara separado para cada capa, y cada una de las cámaras se mueve adecuadamente en relación con la cámara principal de cada fotograma. Luego use [ExecuteInEditMode] para que se actualicen incluso cuando la cámara principal se arrastre al editor. Solo necesito recordar mover solo la cámara principal directamente.
TenFour04
1

Una idea: creo que una cámara para la capa frontal es suficiente. Colocar sprites a una distancia de eso en el plano z, y elevar la distancia te da una fracción sobre la cual mover esa capa hacia atrás.

Por ejemplo, una distancia de objeto 10 desde la cámara frontal se mueve 1/10 en la capa de fondo. Un objeto de distancia 2, se movería 1/2 en su capa respectiva, etc.

Jason Coombes
fuente