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.1 · O mundo em 3D: eixos, câmera e luz

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

Objetivos de aprendizagem

  1. Dizer para onde aponta cada eixo do Godot: X (vermelho), Y (verde), Z (azul).
  2. Ler e mudar a posição de um objeto em metros.
  3. Explicar por que uma cena 3D precisa de câmera e de luz para aparecer no jogo.
  4. Navegar na janela 3D do editor.

Pré-requisitos

Módulo 8 completo (cena, nó, Inspetor, script, Saída).

Materiais

Godot 4.7; projeto exemplos/laboratorio-3d (cena eixos.tscn); papel quadriculado e uma caixa de sapato para a atividade de abertura.

Conceitos

Três eixos. No 2D havia X (para a direita) e Y (para baixo). No 3D do Godot:

EixoCor no editorPara onde cresce
Xvermelhodireita
Yverdecima
Zazulna direção de quem olha a tela (para trás do personagem)

Atenção: no 2D o Y crescia para baixo; no 3D cresce para cima. E a "frente" de um nó 3D é o Z negativo. Isso volta na Aula 9.3.

Unidade. No 2D, posição era em pixels. No 3D, a unidade é o metro. Um cubo pronto do Godot tem 1 m de lado; uma pessoa tem cerca de 1,7 m.

Posição. Três números (X, Y, Z). O cubo apoiado no chão, no centro, fica em (0, 0.5, 0): o centro dele está meio metro acima do chão.

Câmera. No 2D a tela já mostrava a cena. No 3D, o jogo só mostra o que uma Camera3D está vendo. Sem câmera, a tela fica vazia.

Luz. Sem luz, os objetos aparecem escuros ou sem volume. A DirectionalLight3D é o "sol": ilumina tudo na mesma direção, não importa onde ela esteja; o que importa é para onde aponta.

Editor × jogo. O editor tem uma luz e um céu de prévia (botões Alternar prévia da luz solar. e Alternar prévia do ambiente.) para ajudar a montar a cena. Eles não vão para o jogo. Se no jogo tudo ficar escuro, falta pôr um sol de verdade na cena.

Exemplos

ObjetoPosiçãoO que significa
cubo no chão, no centro(0, 0.5, 0)meio metro acima do chão
cubo 3 m à direita(3, 0.5, 0)andou no X
cubo 3 m no alto(3, 3.5, 0)subiu no Y
cubo 3 m para trás(3, 3.5, 3)veio no Z

Tutorial passo a passo

Parte A. Caixa de sapato (40 min)

  1. Em dupla, um canto da caixa é a origem (0, 0, 0). Marquem com fita: X para a direita (vermelho), Y para cima (verde), Z para a frente da caixa, na direção de quem olha (azul).
  2. Um aluno diz uma posição, o outro coloca uma borracha nela. Troquem.

Parte B. Laboratório no Godot (120 min)

  1. Abra o projeto exemplos/laboratorio-3d e a cena cenas/eixos.tscn.
  2. Na janela 3D: botão do meio do mouse gira a vista, rodinha aproxima. Encontre as barras vermelha, verde e azul.
  3. Use Executar Cena Atual. O cubo anda 3 m no X, sobe 3 m no Y, vem 3 m no Z e volta, parando meio segundo em cada ponto. Olhe a Saída: cada parada escreve a posição.
  4. Pare o jogo. Selecione o Cubo e, no Inspetor, em Transform, mude Position para (-2, 0.5, 2). Onde ele foi parar?

Parte C. Câmera e sol (120 min)

  1. Selecione Camera. No alto da janela 3D aparece a opção Visualização (dica: "Visualizar através da câmera selecionada."): marque e veja a cena pelos olhos da câmera.
  2. Mude a Position da câmera e veja o que muda no jogo.
  3. Apague o nó Sol (Ctrl+Z desfaz) e execute: a cena perde o volume. Desfaça.
  4. Gire o Sol mudando Rotation e observe as sombras.

Parte D. Primeira cena 3D sozinho (100 min)

  1. Cena → Nova Cena, Criar Nó Raiz: Cena 3D.
  2. Adicionar Nó Filho... três vezes: MeshInstance3D (no Inspetor, Mesh → New BoxMesh), Camera3D e DirectionalLight3D.
  3. Posicione a câmera para ver o cubo e execute. Salve como primeira_cena_3d.tscn.

Imagens

  • ../../../recursos/imagens/godot/laboratorio-3d-tela-eixos.png: a cena dos eixos rodando, com as letras X, Y e Z.
  • ../../../recursos/imagens/godot/captura-godot3d-editor-labirinto.png: a janela 3D do editor com a vista Perspectiva e o mini-eixo colorido no canto.

Indicação da interface

ItemNome na tela (Godot 4.7.2 em português)
tela 3Dbotão 3D no alto, ao lado de 2D e Script
tipo de vistaPerspectiva (canto da janela 3D)
ferramentasModo de Seleção, Modo de Movimentação, Modo de Rotação, Modo de Escalonamento
menus da janela 3DTransformar, Visualizar
luz e céu só do editorAlternar prévia da luz solar., Alternar prévia do ambiente.
ver pela câmeraopção Visualização com a Camera3D selecionada
propriedadesno Inspetor, Transform → Position, Rotation, Scale (em inglês)

Os nomes das ferramentas, dos botões de prévia e da opção Visualização foram lidos das traduções do Godot 4.7.2; os menus Transformar e Visualizar e a vista Perspectiva aparecem na captura. A opção Visualização (passo 7) não foi fotografada.

O código completo

exemplos/laboratorio-3d/scripts/cubo_passeando.gd:

extends MeshInstance3D
## Aula 9.1: o cubo anda 3 metros em cada eixo, um de cada vez, para meio segundo e volta.
## Olhe a Saída: a posição mostra (X, Y, Z).

const DISTANCIA := 3.0
const PAUSA := 0.5


func _ready() -> void:
	var tween := create_tween().set_loops()
	tween.tween_callback(mostrar.bind("começo"))
	tween.tween_property(self, "position", Vector3(DISTANCIA, 0.5, 0), 1.5)
	tween.tween_callback(mostrar.bind("andou no X (vermelho)"))
	tween.tween_interval(PAUSA)
	tween.tween_property(self, "position", Vector3(DISTANCIA, 0.5 + DISTANCIA, 0), 1.5)
	tween.tween_callback(mostrar.bind("subiu no Y (verde)"))
	tween.tween_interval(PAUSA)
	tween.tween_property(self, "position", Vector3(DISTANCIA, 0.5 + DISTANCIA, DISTANCIA), 1.5)
	tween.tween_callback(mostrar.bind("veio no Z (azul)"))
	tween.tween_interval(PAUSA)
	tween.tween_property(self, "position", Vector3(0, 0.5, 0), 1.5)


func mostrar(onde: String) -> void:
	print(onde, ": ", position)

Explicação do código

  • Vector3(x, y, z) é o Vector2 do Módulo 8 com um número a mais.
  • O Tween (Aula 8.9) leva a posição de um ponto a outro em 1,5 s; tween_interval espera; set_loops() repete para sempre.
  • tween_callback(mostrar.bind("...")) chama a função mostrar com aquele texto, na hora certa da fila.

Na Saída aparece, por exemplo:

começo: (0.0, 0.5, 0.0)
andou no X (vermelho): (3.0, 0.5, 0.0)

(linhas copiadas de uma execução real.)

Resultado esperado

O aluno diz para onde cada eixo aponta, move objetos pelo Inspetor e monta uma cena 3D mínima que aparece no jogo.

Problemas comuns

SintomaCausaSolução
executa e a tela fica cinza, sem nadafalta Camera3D, ou ela olha para o lado erradopôr uma câmera e conferir pela prévia
no editor está claro, no jogo está escurosó havia a luz de prévia do editoradicionar DirectionalLight3D à cena
o cubo ficou "enterrado" no chãoPosition.y igual a 0 (o centro no chão)usar metade da altura: 0,5
"sumiu" ao mudar o Zfoi para trás da câmeralembrar que Z positivo vem na direção de quem olha

Exercício guiado

Um cubo está em (2, 0.5, -4). Ele está à esquerda ou à direita da origem? Mais perto ou mais longe de quem olha pela câmera do laboratório? (Resposta: à direita, porque X é positivo; mais longe, porque Z negativo vai para o fundo.)

Desafio individual

Na sua primeira_cena_3d.tscn, monte uma "mesa": um tampo (caixa achatada) e quatro pernas (caixas finas), usando só Position e Scale.

Desafio avançado (opcional)

Mude o script do cubo para ele desenhar um quadrado no chão (X e Z) em vez de subir no Y.

Critérios de avaliação

  • Nomeia os três eixos e o sentido de cada um.
  • Explica por que a câmera e a luz são necessárias.
  • Cena 3D própria rodando.

Checklist de conclusão

Extensão

Olhe a sala de aula e diga a posição aproximada (em metros) de três objetos, usando um canto como origem.