O que é uma câmera, uma câmera o jogo? Seria a nossa tela de jogo, nós estariamos "filmando" tudo dentro do jogo e depois é repassado ao nosso monitor.
Uma câmera tem sua posição no espaço, o que estamos filmando, teriamos tambem o nosso ângulo de visão, quando damos zoom o nosso ângulo se fecha, não é mesmo?
E na prática, o que é Câmera no XNA? Nos tutoriais passados já passamos por algo parecido a uma câmera. Lembram do "effect.view"? Pois bem, talvez não tenha mencionado mas tudo que desenharmos no XNA estará ligado ao seu próprio efeito, então cada objeto terá o seu effect.view, então teriamos uma centena de views para configurar e para que tudo ficasse certinho no mundo teriamos de configurar tudo igual, e caso mudassemos a posição de nossa câmera teriamos de mudar a posição em todos os objetos.
Até porque não existem câmeras, você pode repassar diferentes valores aos effects.view e effect.World e esses objetos se desenhariam de formas diferentes em nossa tela, seria um caos total. Ao criarmos o que seria nossa câmera acabariamos passando aos nosso objetos um único valor, então organizariamos todos esses valores e destribuiriamos os objetos de forma que eles fiquem iguais e coêrentes com o mundo que queremos criar.
Agora o que é Câmera na linha de código. Nós ja declaramos os seguintes valores no effect no arquivo "terrain.cs" e foram:
View: Passamos a ele tem Vetores, um da Posição, um do alvo, e um indicano onde é o "pra cima".
Projection: Passamos uma matriz do tipo CreatePerspectiveFieldOfView e passamos nosso ângulo de visão, o aspectoRation, dicisão da largura da tela pela altura para que tudo pareça normal, plano proximo e o plano distante, que a area que será desenhada, ignorando tudo que esteja antes e depois desses dois planos.
Assim criariamos uma câmera mas seria importante adicionar elementos de atualização. Vamos pensar mais a frente, o meu jogo, SimFarm, terá uma camera no estilo RTS, uma câmera que dê uma visão de cimas mas eu tambem gostária de ter uma câmera para explorar o meu mundo e uma que siga uma vaca em especifico ou um porco e etc... Então eu teria de criar 3 tipos de câmera. Já vimos que uma câmera tem vários elementos e que devem se repetir, então para facilitar o ato de programar usaremos herança e para isso criaremos uma classe básica, BaseCamera e depois criaremos os 3 tipos de câmera, uma câmera RTS, uma Câmera livre, estilo jogo de nava espacial e uma câmera em terceira pessoa que derivam da classe CameraBase e é ai que começaremos a construir a CameraBase...
Este comentário foi removido pelo autor.
ResponderExcluirPoderia postar futuramente, uma camera "Fist Person"?
ResponderExcluirOnde o personagem principal poderia se mover, com as teclas normalmente, sem que à camera mude seu anglo ou gire junto com as teclas. Sendo o movimento e à camera, independentes um do outro?
E acertando os imputs, tando do keyboard como do controle xbox?
PC: Teclas W,A,S,D ou setas movem personagem. Mouse guia à camera.
XBOX: Left Stick(Direcionador) move personagem. Right Stick(Direcionador) guia à camera.
Obrigado pela atenção.