Procurei... procurei... e finalmente achei uma boa referência de implementação de uma câmera 2D no XNA!
O exemplo é super simples e tem uma lógica super adaptável a qualquer projeto. No meu caso, precisei criar a mais algumas verificações do tamanaho do cenário, pois ele é infinitamente maior que a tela de jogo.
Utilizando diretamente o exemplo se perceberá que o personagem principal do game é o guia absoluto da câmera, assim ele estará sempre no centro da tela. O problema que surge quando o personagem estiver em uma das extremidades do cenário, pois a câmera força a centralização do mesmo deslocando o cenário conjuntamente. Para solucionar isso e se adaptar a qualquer tamanho de cenário que eu criar, tanto horizontalmente como verticalmente criei testes de posicionamente para os eixos X e Y. Eles farão com que a câmera se movimente apenas quando o personagem alcançar a posição central no eixo X ou Y da tela se houver cenário disponível para movimentação.
O link que muito me ajudou é este: http://www.theindiebay.com/2009/07/31/camera-2d-in-xna/ e logo abaixo está a verificação que fiz.
(float) últimaPosiçãoX e últimaPosiçãoY [Atributos da classe Câmera]
(float) eixoX e eixoY [Os quais são zerados no início das verificações]
Se (posição do personagem no eixo X * 2 >= largura da tela)
{
eixoX = largura da tela * 0.5 - posição do personagem no eixo X
Se (- eixoX > largura da tela + largura do personagem)
{
últimaPosiçãoX = eixoX
}Se (- eixoX > largura da tela + largura do personagem)
{
eixoX = últimaPosiçãoX
}últimaPosiçãoX = eixoX
Se (posição do personagem no eixo Y * 2 >= altura da tela)
{
eixoY = altura da tela * 0.5 - posição do personagem no eixo Y
Se (altura da tela + (- eixoY) > altura do cenário)
{
últimaPosiçãoY = eixo Y
}Se (altura da tela + (- eixoY) > altura do cenário)
{
eixoY = últimaPosiçãoY
}últimaPosiçãoY = eixo Y
Programming of Games to Live!
}

0 comentários:
Postar um comentário