3. Movimento de Câmera

 Objetivo: Mover a câmera no espaço 3D
 Nível: Iniciante
 Arquivos: camera.bb / house.3ds

  Camera

Até agora nós usamos apenas uma câmera estática. Mas no real mundo dos jogos de PC nós queremos que ela siga o personagem principal, seja em visão em terceira pessoa (como Tomb Raider) ou talvez uma visão mais pessoal como a visão em primeira pessoa (usada em Quake ou Unreal).

Dê uma olhada na demonstração de 'Marko' do Sr Sibly para um grande exemplo de uma câmera inteligente. O código para controlar sua câmera pode ser tão complicado quanto o código principal do jogo... se você quiser!

Vamos observar a um exemplo básico
:

   
  Graphics3D 800,600

  SetBuffer BackBuffer()

  camera=CreateCamera()
  CameraViewport camera,0,0,800,600

  light=CreateLight()

  house=LoadMesh( "house.3ds" )
  RotateEntity house,0,90,0

  While Not KeyHit(1)

      If KeyDown(200) Then
          MoveEntity camera,0,0,1
      EndIf

      If KeyDown(208) Then
          MoveEntity camera,0,0,-1
      EndIf

      If KeyDown(203) Then
          TurnEntity camera,0,1.0,0
      EndIf

      If KeyDown(205) Then
          TurnEntity camera,0,-1.0,0
      EndIf

  UpdateWorld
  RenderWorld

  Text 335,500,"Movimento de Câmera"

  Flip

  Wend
  End

 

Usando o as setas do teclado você pode explorar o ambiente, PARA CIMA e PARA BAIXO movem para frente e para trás - ESQUERDA e DIREITA giram a câmera em seu próprio eixo.

Não há realmente muito mais que isto, nós já cobrimos movimento e rotação no tutorial anterior. A única diferença aqui é que nós estamos avançando na tela. Da mesma maneira que nós movemos um objeto, nós usamos os mesmos comandos MoveEntity e TurnEntity para mover a câmera. Isso faz o Blitz3D ser uma ótima linguagem para aprender! Em vez de ter que se lembrar de dezenas de comandos diferentes para objetos, câmeras e luzes nós apenas usamos as mesmas instruções.

Talvez você queira fazer a visão subir e descer, como o movimento de caminhada em Quake ou Doom... Bastante fácil, apenas crie uma repetição que mova a altura da câmera para cima e para baixo. Eu deixarei a parte de codificação para você!

Por padrão o Blitz3D deixará de desenhar um objeto se ele estiver muito longe da câmera, isto é conhecido como 'alcance da câmera'. Qualquer coisa além dessa região não será desenhada. Isto é muito útil se tivermos muitos objetos na tela, tudo que estiver longe não será mostrado - o que significa que nós ganhamos algum tempo de processamento extra.

Mas espere... o Blitz3D também pode nos dar um efeito de névoa! Nós vimos vários jogos que usam isto (Unreal por exemplo). Quanto mais distante da tela menos visível será o objeto. Para mais informações sobre estas funções veja o manual na parte de comandos de câmera. Usados corretamente, os comandos de névoa podem dar ao mundo 3D um visual natural sinistro
!

Tutorial 4 - Animação de Objetos