Nós e cenas

No Visão geral dos conceitos-chave da Godot engine, nós vimos que um jogo Godot é uma árvore de cenas e que cada cena é uma árvore de nós. Nessa aula, nós vamos explicar um pouco mais sobre eles. Você também vai criar sua primeira cena.

Nós

Nós são um conceito fundamental do seu jogo. Eles são como ingredientes numa receita. Tem um monte de nós que podem mostrar uma image, tocar um som, representar uma câmera, e muito mais.

../../_images/nodes_and_scenes_nodes.png

Todos os nós têm os seguintes atributos:

  • Um nome.

  • Propriedades editáveis.

  • Eles recebem retornos de chamada para atualizar cada quadro.

  • You can extend them with new properties and functions.

  • You can add them to another node as a child.

O último atributo é um ponto-chave. Juntos, nós formam uma árvore, que é um jeito poderoso de organizar seus projetos. Já que nós diferentes tem diferentes funcionalidades, combinando eles conseguimos comportamentos mais complexos. Como vimos anteriormente, você pode construir um personagem jogável que a câmera segue usando um KinematicBody chamado "Character", um nó de sprite, um nó de câmera, e um nó de forma de colisão.

../../_images/nodes_and_scenes_character_nodes.png

Cenas

Quando você organiza nós numa árvore, como nosso personagem, nós chamamos isso de construir uma cena. Uma vez que salvo, cenas funcionam como nós no editor, como pode adicioná-las como filho de um nó existente. Nesse caso, a instância da cena aparece como um único nó com os nós internos escondidos.

Cenas permitem que você estruture o código do seu jogo do jeito que quiser. Você pode compor nós para criar nós personalizados e complexos, como um personagem de um jogo que corre e pula, uma barra de vida, um baú que você interage, e mais.

../../_images/nodes_and_scenes_3d_scene_example.png

Basicamente, o editor do Godot é um editor de cena. Ele tem um monte de ferramentas para edição de cenas 2D e 3D, assim como interfaces com usuário. Um projeto Godot pode conter tantas cenas quanto você precisar. O Motor apenas necessita de uma cena principal para sua aplicação. Esta será a cena que o Godot vai carregar primeiro quando você ou um jogador executar o jogo

Além de agirem como nós, cenas tem os seguintes atributos:

  1. Elas sempre tem um nó raiz, como o "Character" no nosso exemplo.

  2. Você pode salvá-las no seu disco e carregar elas depois.

  3. Você pode criar quantas instâncias de uma cena quiser. Você pode ter cinco ou dez personagens no seu jogo, criados a partir da sua cena Personagem.

Criando sua primeira Cena

Bora criar sua primeira cena com um único nó. Para isso, você precisa primeiro criar um novo projeto. Depois de abrir seu projeto, você deve ver um editor vazio.

../../_images/nodes_and_scenes_01_empty_editor.png

In an empty scene, the Scene dock on the left shows several options to add a root node quickly. "2D Scene" adds a Node2D node, "3D Scene" adds a Spatial node, and "User Interface" adds a Control node. These presets are here for convenience; they are not mandatory. "Other Node" lets you select any node to be the root node. In an empty scene, "Other Node" is equivalent to pressing the "Add Child Node" button at the top-left of the Scene dock, which usually adds a new node as a child of the currently selected node.

Vamos adicionar um único nó de Label na nossa cena. Sua função é desenhar texto na tela.

Press the "Add Child Node" button or "Other Node" to create a root node.

../../_images/nodes_and_scenes_02_scene_dock.png

A caixa de diálogo Criar Nó é aberta, mostrando a longa lista de nós disponíveis.

../../_images/nodes_and_scenes_03_create_node_window.png

Selecione o nó Label. Você pode digitar seu nome para filtrar a lista.

../../_images/nodes_and_scenes_04_create_label_window.png

Clique no nó Label para selecioná-lo e clique no botão Criar na parte inferior da janela.

../../_images/nodes_and_scenes_05_editor_with_label.png

Muito coisa acontece quando você adiciona o primeiro nó da cena. A cena muda pra área de trabalho 2D porque Label é um nó do tipo 2D. A Label aparece, selecionada, no canto superior esquerda da tela (viewport). O nó aparece no Dock de Cenas à esquerda, e as propriedades do nó aparecem na Dock de Inspeção à direita.

Changing a node's properties

O próximo passo é mudar a propriedade "Text" do Label. Vamos alterá-la para "Olá, mundo!".

Vá para a Dock de Inspeção à direita da viewport. Clique dentro do campo abaixo da propriedade de Texto e digite "Olá Mundo".

../../_images/nodes_and_scenes_06_label_text.png

Você vai ver o texto aparecer na viewport enquanto você digita.

Você pode mover seu nó Label na viewport selecionando a ferramenta de mover na barra de ferramentas (toolbar).

../../_images/nodes_and_scenes_07_move_tool.png

Com a Label selecionada, clique e arraste para qualquer lugar na viewport para movê-la para o centro da janela delimitada pelo retângulo.

../../_images/nodes_and_scenes_08_hello_world_text.png

Running the scene

Everything's ready to run the scene! Press the Play Scene button in the top-right of the screen or press F6 (Cmd + R on macOS).

../../_images/nodes_and_scenes_09_play_scene_button.png

Um popup vai te convidar a salvar a cena, que é necessário para rodá-la.

../../_images/nodes_and_scenes_10_save_scene_popup.png

Clique no Botão de Sim, e no gerenciador de arquivos que aparecer, pressione o botão de Salvar para salvá-la como "Label.tscn".

../../_images/nodes_and_scenes_11_save_scene_as.png

Nota

O diálogo de Salvar Cena, como outros diálogos de arquivos no editor, só deixam você salvar arquivos dentro do projeto. O res:// no topo da janela representa o diretório raiz do projeto e significa "Caminho dos Recursos". Para mais informações sobre o caminho dos arquivos no Godot, veja Sistema de arquivos.

A aplicação deve abrir uma nova janela e mostrar o texto "Olá Mundo".

../../_images/nodes_and_scenes_12_final_result.png

Feche a janela ou pressione :kbd:`F8`para fechar a cena que está rodando.

Nota

If this doesn't immediately work and you have a hiDPI display on at least one of your monitors, go to Project -> Project Settings -> Display -> Window then enable Allow Hidpi under Dpi.

Setting the main scene

To run our test scene, we used the Play Scene button. Another button next to it allows you to set and run the project's main scene. You can press F5 (Cmd + B on macOS) to do so.

../../_images/nodes_and_scenes_13_play_button.png

Uma janela popup aparecerá, te convidando para selecionar a cena principal.

../../_images/nodes_and_scenes_14_main_scene_popup.png

Clique o botão Selecionar, e no dialógo de arquivo que aparece, clique duas vezes em Label.tscn.

../../_images/nodes_and_scenes_15_select_main_scene.png

A demo deve rodar novamente. No futuro, toda vez que rodar seu projeto, Godot vai usar essa cena como um ponto de partida.

Nota

O editor salva o caminho para a cena principal no arquivo project.godot na pasta do seu projeto. Enquanto você pode editar esse arquivo de texto diretamente para mudar as configurações do project, você também pode usar a janela "Project->Configurações de Projeto" para fazer isso.

Na próxima parte, discutiremos outro conceito chave em jogos e em Godot: criar instâncias de uma cena.