Estou fazendo um jogo 2D no Unity, mas isso se aplica a qualquer mecanismo de jogo 2D.
Se eu implementar paralaxe de vários planos com câmeras ortográficas, é difícil definir os sprites da camada de segundo plano e saber onde eles se alinharão com os sprites em outras camadas.
Meu primeiro instinto foi usar várias câmeras, uma para cada camada, e reduzir a velocidade de movimento das câmeras para as camadas de fundo. Isso evita a necessidade de mover todos os sprites de segundo plano a cada quadro. O problema é que uma camada que se move a meia velocidade ocupa metade do espaço da camada principal quando visualizada no editor. Portanto, é difícil saber onde colocar sprites durante o jogo. O problema fica exponencialmente pior à medida que você aumenta o número de camadas.
Como contornar isso? Tentei dimensionar inversamente as camadas de acordo com a velocidade de movimento pretendida enquanto trabalhava com elas no editor. Isso coloca todos os sprites de segundo plano nos locais corretos em relação à camada principal, mas eles são terrivelmente distorcidos.
Preciso apenas sugá-lo e alternar constantemente entre o editor e o jogo em execução para testar os fundos de paralaxe?
fonte
Respostas:
Como não estou familiarizado com o Unity, não posso ajudá-lo com detalhes específicos, mas parece que você precisa implementar uma GUI para ajustar esses valores durante o tempo de execução com, por exemplo, um conjunto de controles deslizantes ou campos numéricos. Seria bastante simples implementar campos para alterar os valores que você está determinando (escala, velocidade, etc.) durante o tempo de execução, o que fornece feedback imediato. Para posicionamento, você pode usar campos ou posicionamento manual com arrastar cliques (o que pode ser um pouco mais difícil de implementar, mas muito mais intuitivo).
Isso fornece controle total sem compilar e executar o código para cada pequena fração de uma alteração. Quando você finalmente chegar a uma aparência e se sentir feliz, use esses valores em sua lista de constantes. Se isso é assustador demais devido ao número de variáveis que você está editando (por exemplo, vários locais de sprites em vários níveis), você gostaria de implementá-lo em um editor de níveis, imagino, com a mesma funcionalidade de ajuste manual, mas com o resultado da criação e armazenamento dos dados ajustados.
fonte
Uma idéia: eu acho que uma câmera para a camada frontal é suficiente. Colocar sprites a uma distância do plano z e ler a distância fornecem uma fração sobre a qual mover a camada traseira.
Por exemplo, uma distância do objeto 10 da câmera frontal se move 1/10 na camada de fundo. Um objeto de distância 2 se moveria 1/2 em sua respectiva camada, etc.
fonte