Pesquisar
Close this search box.

Criando seu Primeiro Script em Godot

Vamos aprender a criar o nosso Script em Godot

Continuando nossa série de tutoriais traduzidos de Godot Engine (site oficial), vamos agora por um pouco de movimento em nossos sprites.

Nesta lição, você codificará seu primeiro script para fazer o ícone Godot girar em círculos usando GDScript. Como mencionamos nos artigos anteriores, presumimos que você tenha fundamentos de programação. O código C# equivalente foi incluído em outra guia por conveniência.

Você também vai gostar:
Jogos em Unreal Engine
Tudo sobre Pixel Art
Aprenda a Criar Games 2D
Melhor Curso de Criação de Jogos
Criando Jogos no GameMaker

Script em godot
Vamos girar

Domine a Godot

🎮 Deixe Sua Criatividade Ganhar Vida! 🌍

Não é apenas sobre aprender técnicas; é sobre transformar suas ideias únicas em jogos que cativam corações em todo o mundo. Com as estratégias e ferramentas mais avançadas ao seu alcance, prepare-se para transformar sua visão em realidade. Comece agora e seja o criador de jogos que você sempre sonhou em ser!

👾 Este é o Momento: Dê o Primeiro Passo Rumo ao Sucesso! 🌟

A jornada para se tornar um desenvolvedor de jogos profissional começa aqui e agora. Com um futuro brilhante e cheio de possibilidades emocionantes no desenvolvimento de jogos à sua frente, por que esperar? Clique e descubra como nosso curso pode ser o trampolim para o seu sucesso na indústria de jogos.

Configuração seu Primeiro Projeto

Crie um novo projeto para começar do zero. Seu projeto deve conter uma imagem: o ícone Godot, que costumamos usar para prototipagem na comunidade. Precisamos criar um node Sprite2D para exibi-lo no jogo. Na aba Scena, clique no botão Other Node.

Crie um node
Crie um node

Digite “Sprite2D” na barra de pesquisa para filtrar os nós e clique duas vezes em Sprite2D para criar o node.

Crie um sprite
Crie um sprite

Sua aba Cena agora deve ter apenas um node Sprite2D.

Crie uma cena
Crie uma cena

Um node Sprite2D precisa de uma textura para ser exibido. No Inspetor à direita, você pode ver que a propriedade Texture diz “[vazio]”. Para exibir o ícone Godot, clique e arraste o arquivo icon.svg do dock FileSystem para o slot Texture. Você também pode criar nós Sprite2D automaticamente arrastando e soltando imagens na viewport.

Sprite criado
Sprite criado

Em seguida, clique e arraste o ícone na janela de visualização para centralizá-lo na visualização do jogo.

Sprite no viewport
Sprite no Viewport

Criando um novo script em Godot

Para criar e anexar um novo script ao nosso node, clique com o botão direito em Sprite2D no dock da cena e selecione “Anexar Script”.

Anexando um script
Anexando um script

A janela Anexar script de node é exibida. Permite selecionar o idioma do script e o caminho do arquivo, entre outras opções. Altere o campo Modelo de “Node: Padrão” para “Objeto: Vazio” para começar com um arquivo limpo. Deixe as outras opções definidas com seus valores padrão e clique no botão Criar para criar o script. Os nomes dos scripts C# precisam corresponder ao nome da classe. Neste caso, você deve nomear o arquivo MySprite2D.cs.

Criando o script
Criando o script

A área de trabalho Script deve aparecer com seu novo sprite_2d.gd arquivo aberto e a seguinte linha de código em GDScript:

extends Sprite2D

Todo arquivo GDScript é implicitamente uma classe. A extendspalavra-chave define a classe que este script herda ou estende. Neste caso, é Sprite2D, o que significa que nosso script terá acesso a todas as propriedades e funções do nó Sprite2D, incluindo classes que ele estende, como Node2D, CanvasItem, e Node.

As propriedades herdadas incluem aquelas que você pode ver no dock do Inspector, como o texture. Por padrão, o Inspetor exibe as propriedades de um nó em “Title Case”, com palavras em maiúsculas separadas por um espaço.

No código GDScript, essas propriedades estão em “snake_case”, que está em letras minúsculas com palavras separadas por um sublinhado. Você pode passar o mouse sobre o nome de qualquer propriedade no Inspetor para ver uma descrição e seu identificador no código.

Nosso script atualmente não faz nada. Vamos imprimir o texto “Olá, mundo!” ao painel inferior Saída para começar. Adicione o seguinte código ao seu script em GD Script:

func _init():
	print("Hello, world!")

A palavra-chave “func” define uma nova função chamada _init. Este é um nome especial para o construtor da nossa classe. O mecanismo chama _init() cada objeto ou node ao criá-lo na memória, se você definir esta função. O GDScript é uma linguagem baseada em recuo. A guia no início da linha que diz print() é necessária para o código funcionar. Se você omitir ou não recuar uma linha corretamente, o editor irá destacá-la em vermelho e exibir a seguinte mensagem de erro: “Bloco recuado esperado”.

Salve a cena como sprite_2d.tscn, se ainda não tiver feito, e pressione F6 (Cmd + R no macOS) para executá-la. Observe o painel inferior Saída que se expande. Deve exibir “Olá, mundo!”.

Hello world
Hello World

Exclua a função _init(), então você só ficará com a linha .extends Sprite2D.

Girando

É hora de fazer nosso node se mover e girar. Para fazer isso, adicionaremos duas variáveis-membro ao nosso script: a velocidade de movimento em pixels por segundo e a velocidade angular em radianos por segundo. Adicione o seguinte o seguinte comando em GDScript após a linha extends Sprite2D:

var speed = 400
var angular_speed = PI

As variáveis-membro ficam próximas ao topo do script, depois de qualquer linha “estende”, mas antes das funções. Cada instância de nó com este script anexado terá sua própria cópia das propriedades speed e angular_speed.

Observação: Os ângulos no Godot funcionam em radianos por padrão, mas você tem funções e propriedades integradas disponíveis se preferir calcular ângulos em graus.

Para mover nosso ícone, precisamos atualizar sua posição e girar cada quadro no loop do jogo. Podemos usar a função virtual _process() da classe Node. Se você defini-lo em qualquer classe que estenda a classe Node, como Sprite2D, Godot chamará a função a cada quadro e passará a ela um argumento chamado delta, o tempo decorrido desde o último quadro.

Os jogos funcionam renderizando muitas imagens por segundo, cada uma chamada de quadro, e fazem isso em loop. Medimos a taxa na qual um jogo produz imagens em quadros por segundo (FPS). A maioria dos jogos visa 60 FPS, embora você possa encontrar números como 30 FPS em dispositivos móveis mais lentos ou 90 a 240 para jogos de realidade virtual.

Os desenvolvedores de motores e jogos fazem o possível para atualizar o mundo do jogo e renderizar imagens em um intervalo de tempo constante, mas sempre há pequenas variações nos tempos de renderização de quadros. É por isso que o mecanismo nos fornece esse valor de tempo delta, tornando nosso movimento independente de nossa taxa de quadros.

Na parte inferior do script em GDScript, defina a função:

func _process(delta):
	rotation += angular_speed * delta

A palavra-chave Func define uma nova função. Depois disso, temos que escrever o nome da função e os argumentos que ela recebe entre parênteses. Dois pontos encerram a definição e os blocos recuados a seguir são o conteúdo ou as instruções da função.

Observe como _process(), assim como _init(), começa com um sublinhado inicial. Por convenção, as funções virtuais do Godot, ou seja, funções integradas que você pode substituir para se comunicar com o mecanismo, começam com um sublinhado.

A linha dentro da função, rotação += angular_speed * delta, incrementa a rotação do nosso sprite a cada quadro. Aqui, rotação é uma propriedade herdada da classe Node2D, que Sprite2D estende. Ele controla a rotação do nosso nó e funciona com radianos.

Dica: No editor de código, você pode clicar com a tecla Ctrl pressionada em qualquer propriedade ou função integrada, como posição, rotação ou _processo, para abrir a documentação correspondente em uma nova guia.

Execute a cena para ver o ícone Godot no lugar.

Girando, girando
Girando, girando

Observação: Em C#, observe como o deltaargumento usado por _Process()é a double. Portanto, precisamos convertê-lo para floatquando o aplicarmos à rotação.

Rodando

Vamos agora fazer o nó se mover. Adicione as duas linhas a seguir dentro da função _process(), garantindo que as novas linhas sejam recuadas da mesma forma que a linha rotation += angular_speed * delta antes delas.

var velocity = Vector2.UP.rotated(rotation) * speed

position += velocity * delta

Como já vimos, a palavra-chave var define uma nova variável. Se você colocar no topo do script, ele define uma propriedade da classe. Dentro de uma função, define uma variável local: ela só existe dentro do escopo da função.

Definimos uma variável local chamada velocidade, um vetor 2D que representa uma direção e uma velocidade. Para fazer o nó avançar, partimos da constante Vector2.UP da classe Vector2, um vetor apontando para cima, e giramos chamando o método Vector2 rotated(). Esta expressão, Vector2.UP.rotated(rotation), é um vetor apontando para frente em relação ao nosso ícone. Multiplicado pela nossa propriedade de velocidade, dá-nos uma velocidade que podemos utilizar para mover o nó para a frente.

Adicionamos velocidade * delta à posição do nó para movê-lo. A posição em si é do tipo Vector2, um tipo integrado no Godot que representa um vetor 2D. Execute a cena para ver a cabeça de Godot correndo em círculos.

Rodando
Rodando

Observação: Mover um node como esse não leva em consideração a colisão com paredes ou chão. Em seu primeiro jogo 2D, você aprenderá outra abordagem para mover objetos enquanto detecta colisões.

Veja o script em GCScript completo para a referência. Se ele não ficou assim, volte alguns passos e veja onde pode ter errado:

extends Sprite2D

var speed = 400
var angular_speed = PI


func _process(delta):
	rotation += angular_speed * delta

	var velocity = Vector2.UP.rotated(rotation) * speed

	position += velocity * delta

FAQ Rápido sobre Como Fazer um jogo no Godot

O que são nodes no Godot?

Nodes são os blocos de construção fundamentais utilizados para criar elementos no Godot Engine. Eles representam entidades como personagens, objetos, câmeras, luzes e muito mais.

O que são cenas no Godot?

As cenas são conjuntos de nodes que compõem uma parte específica do seu jogo. Elas podem representar níveis, menus, telas de créditos e outras partes do seu jogo.

Como adiciono nodes a uma cena no Godot?

Você pode adicionar nodes a uma cena no Godot usando o sistema de arrastar e soltar da interface do usuário ou através de scripts. Basta arrastar o node desejado da janela de nós para a cena.

Como faço para conectar cenas entre si no Godot?

Você pode conectar cenas entre si no Godot usando o conceito de instanciar. Isso envolve instanciar uma cena dentro de outra cena, permitindo que elas se comuniquem e interajam umas com as outras.

Fale conosco nos comentários e diga oque achou dessa matéria e aproveite para ler mais notícias e matérias, como por exemplo, nosso guia para criar jogos, no nosso site.

Já parou para pensar em Quanto Custa para Criar um Game? Vamos explicar para você!
Entenda oque é Retopologia e sobre como fazer
Aprenda tudo o que precisa saber sobre Publicar Jogos Independentes
Projeto de Lei 2796/2021 foi assinado na última sexta-feira (3) pelo presidente Luiz Inácio Lula da Silva e passa a valer a partir de hoje (6), data da publicação no Diário Oficial; Marco Legal estabelece princípios e diretrizes para o setor de games no Brasil e cria condições reais para que ele se desenvolva
Saiba mais sobre a Psicologia do personagem e como construir bem seus personagens
Veja as vantagens de desvantagens de usar uma das três linguagens de script da Godot