sexta-feira, 16 de outubro de 2009

void XNA Câmera2D()

{

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.

Variáveis para os teste:
(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]

Verificação no eixo X:

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)
{
eixoX = últimaPosiçãoX
}

últimaPosiçãoX = eixoX
}

Verificação no eixo Y:

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)
{
eixoY = últimaPosiçãoY
}

últimaPosiçãoY = eixo Y
}

Programming of Games to Live!

}

0 comentários:

Postar um comentário