Pular para o conteúdo
Jogos Digitais
Nesta página
  1. Objetivos de aprendizagem
  2. Pré-requisitos
  3. Materiais
  4. Conceitos
  5. Exemplos
  6. Tutorial passo a passo
  7. Imagens
  8. Indicação da interface
  9. O código completo
  10. Explicação do código
  11. Resultado esperado
  12. Problemas comuns
  13. Exercício guiado
  14. Desafio individual
  15. Desafio avançado (opcional)
  16. Critérios de avaliação
  17. Checklist de conclusão
  18. Extensão

Módulo 9 · Aula 9.4 · Câmera em terceira pessoa

Carga horáriaDificuldadeFerramentaCompetências
8 h/a⭐⭐⭐Godot 4.7C2, C3

Objetivos de aprendizagem

  1. Diferenciar câmera em primeira pessoa, terceira pessoa e vista de cima.
  2. Montar uma câmera que segue o personagem com SpringArm3D.
  3. Ajustar distância, inclinação e campo de visão até o jogo ficar jogável.
  4. Explicar por que o braço precisa ignorar o próprio jogador.

Pré-requisitos

Aula 9.3.

Materiais

Godot 4.7; chave-da-porteira (cenas/jogador.tscn, nó Braco).

Conceitos

Tipos de câmera.

CâmeraOnde ficaBom para
primeira pessoanos olhos do personagemsentir que é você ali dentro
terceira pessoaatrás e acima do personagemver o personagem e o caminho
vista de cimabem alto, olhando para baixoestratégia, labirintos simples

O Chave da Porteira usa terceira pessoa bem alta, quase de cima: num labirinto, o jogador precisa ver o corredor.

Câmera filha do jogador. Se a câmera for filha do jogador, ela anda e gira junto, sem nenhuma linha de código.

Braço de mola (SpringArm3D). É um "pau de selfie" com mola. A câmera fica na ponta. Se aparecer uma parede entre o jogador e a câmera, o braço encolhe para a câmera não ficar atrás da parede; quando o caminho abre, ele estica de novo. O braço estica no seu Z positivo (para trás).

Os números do Chave da Porteira. Eles não saíram de fórmula: saíram de testar e olhar a tela. Na preparação do curso foram cinco tentativas, cada uma com uma foto do jogo:

TentativaProblema visto na fotoO que mudou
braço de 4 m, 20°, corredor de 2 mcâmera colada no chapéucorredores de 3 m (TAMANHO), braço mais longo
braço de 5 m, 43°a parede de trás tampava metade da telamais altura e mais inclinação
braços de 6 a 8 m, de 51° a 66°, origem no jogadorainda sobrava parede de trás na parte de baixomudar a origem do braço
braço de 8 m, 66°, origem 2,5 m à frentecâmera quase em cima: só se via o chapéumenos inclinação, origem mais perto
braço de 8 m, 54°, origem 1,5 m à frentepersonagem embaixo e o caminho à frente visívelficou

Pôr a origem do braço à frente do personagem faz a câmera mirar o caminho, e não a cabeça dele.

Campo de visão (fov). Quanto do mundo cabe na tela, em graus. O padrão é 75; o jogo usa 50, como uma lente que "aproxima".

O braço bate no próprio jogador. O braço procura obstáculos com um raio. O primeiro obstáculo que ele acha é... a cápsula do próprio jogador. Por isso o script faz braco.add_excluded_object(get_rid()). O teste automático confere isso: com a linha, o braço fica em 8 m; com um teto colocado no caminho, encolhe; tirando o teto, volta a 8 m.

Exemplos

Propriedade do SpringArm3DValor no jogo
Position(0, 1.5, -1.5): altura do peito, 1,5 m à frente
Rotation X-54,4° (o Inspetor mostra em graus; no arquivo fica -0,95 radiano)
Spring Length8 m
Margin0,2 m
Camera3D → Fov50

Tutorial passo a passo

Parte A. Ver o braço (40 min)

  1. Abra jogador.tscn e selecione Braco. No Inspetor, confira os valores da tabela.
  2. Selecione Camera e marque Visualização no alto da janela 3D: é o que o jogador vê.

Parte B. Montar no seu personagem (120 min)

  1. No seu Jogador (Aula 9.3), Adicionar Nó Filho... → SpringArm3D (Braco); dentro dele, Camera3D (Camera).
  2. Ajuste Position, Rotation X e Spring Length até ver o personagem e o chão à frente.
  3. Escreva no _ready a linha braco.add_excluded_object(get_rid()).

Parte C. Experimentos (140 min)

  1. Tire a linha do passo 5 e execute: a câmera vai parar colada no personagem. Ponha de volta.
  2. Faça três versões e jogue cada uma por 2 minutos, num corredor com curvas:
    • primeira pessoa: braço com Spring Length 0 e câmera na altura da cabeça;
    • terceira pessoa baixa: 4 m e -20°;
    • a do jogo: 8 m e -54°.
  3. Anote no diário qual foi mais fácil, qual deu mais medo e qual bateu mais na parede.

Imagens

  • ../../../recursos/imagens/godot/captura-godot3d-jogador-braco.png: o Braco selecionado, com Spring Length 8 m, Margin 0,2 m e a rotação de -54,4°.
  • ../../../recursos/imagens/godot/chave-da-porteira-tela-chave.png: a vista do jogo, com o caminho à frente.

Indicação da interface

ItemNome na tela
braçonó SpringArm3D; propriedades Collision Mask, Shape, Spring Length, Margin (em inglês)
ver pela câmeraopção Visualização com a câmera selecionada
campo de visãoCamera3D → Fov

O código completo

cenas/jogador.tscn, trecho do braço e da câmera (arquivo de texto da cena):

[node name="Braco" type="SpringArm3D" parent="."]
position = Vector3(0, 1.5, -1.5)
rotation = Vector3(-0.95, 0, 0)
spring_length = 8.0
margin = 0.2

[node name="Camera" type="Camera3D" parent="Braco"]
current = true
fov = 50.0

E, no jogador.gd:

func _ready() -> void:
	# Sem esta linha, o braço da câmera "bate" no próprio corpo do jogador e encolhe.
	braco.add_excluded_object(get_rid())

Explicação do código

  • get_rid() é a "identidade" do corpo do jogador no motor de física. O braço passa a ignorá-lo.
  • current = true diz que esta é a câmera do jogo (pode haver várias na cena).
  • A rotação no arquivo é em radianos (-0,95); o Inspetor mostra em graus (-54,4°).

Resultado esperado

Câmera que segue o personagem, encolhe quando há parede no caminho e mostra o corredor à frente.

Problemas comuns

SintomaCausaSolução
câmera colada no personagembraço batendo no próprio jogadoradd_excluded_object(get_rid())
só se vê o chapéuinclinação demais e origem no centro do jogadormenos inclinação ou origem à frente
parede tapa a telacâmera baixa demaissubir a inclinação
tela "treme" ao passar rente à paredebraço encolhe e estica de repenteaumentar Margin ou deixar a câmera mais alta que as paredes
câmera olha para o lado erradoCamera3D girada dentro do braçozerar a rotação da câmera; quem gira é o braço

Exercício guiado

Por que a câmera é filha do braço, e o braço filho do jogador, em vez de a câmera ser filha direta do jogador? (Resposta: o braço é que sabe encolher quando há parede; a câmera vai na ponta dele.)

Desafio individual

Faça a tecla C alternar entre a câmera alta do jogo e uma de primeira pessoa (mudando spring_length e rotation do braço pelo código).

Desafio avançado (opcional)

Faça a câmera girar em volta do jogador com o mouse (InputEventMouseMotion), girando só o braço.

Critérios de avaliação

  • Câmera em terceira pessoa funcionando no próprio personagem.
  • Explica o braço de mola e a exclusão do jogador.
  • Diário com a comparação das três câmeras.

Checklist de conclusão

Extensão

Escolha um jogo que você conhece e descreva a câmera dele: onde fica, o que ela mostra e o que esconde.