Pesquisar
Close this search box.

Script de Movimento no Godot: Faça seus Sprites se Moverem na Tela

Aprenda a fazer o Script de Movimento no Godot

Continuando nossa série de tutoriais traduzidos do site oficial da Godot Engine (site oficial) é hora de começáramos a ensinar você a como fazer seu boneco se mover pela tela com o input do seu controle ou teclado com o Script de Movimento no Godot.

Na lição anterior, fizemos o sprite rodar livremente pela tela, incluindo as funções de posição e velocidade, mas agora vamos adicionar o controle.

Não é preciso dizer o porque você precisa colocar isso em seu jogo, afinal, sem esses comandos, não há como o seu jogador controlar seu personagem!

Controlar sprites em um jogo 2D na engine Godot envolve uma série de etapas e técnicas que permitem aos desenvolvedores criar personagens, objetos e elementos visuais interativos para seus jogos.

Na Godot, os sprites são representados pelo node Sprite, que pode ser adicionado a um node Node2D ou a qualquer outro node que possa conter cenas 2D.

O nó Sprite permite carregar uma imagem ou uma animação e exibi-la na tela do jogo. Vamos explicar algumas abordagens e conceitos gerais sobre como lidar com sprites em jogos 2D usando a Godot e, se ficar com dúvidas, é só deixar nos comentários.

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.

Como Fazer o Script de Movimento no Godot

Com base na lição anterior, Criando seu primeiro script, vamos dar uma olhada em outro recurso importante de qualquer jogo: dar controle ao jogador. Para adicionar isso, precisamos modificar nosso código sprite_2d.gd. Você tem duas ferramentas principais para processar a entrada do jogador no Godot:

  • Os retornos de chamada de entrada integrados, principalmente _unhandled_input(). Assim como _process(), é uma função virtual integrada que Godot chama toda vez que o jogador pressiona uma tecla. É a ferramenta que você deseja usar para reagir a eventos que não acontecem a cada quadro, como pressionar Espaço para pular.
  • O input único chamado de singleton. Um singleton é um objeto acessível globalmente. Godot fornece acesso a vários scripts. É a ferramenta certa para verificar a entrada de cada quadro.

Usaremos o Input único aqui, pois precisamos saber se o jogador deseja virar ou mover cada quadro. Para virar, devemos usar uma nova variável: direction. Em nossa função _process(), substitua a linha rotation += angular_speed * delta pelo código em GDScript abaixo.

var direction = 0
if Input.is_action_pressed("ui_left"):
	direction = -1
if Input.is_action_pressed("ui_right"):
	direction = 1

rotation += angular_speed * direction * delta

Nossa variável local de direction é um multiplicador que representa a direção para a qual o jogador deseja virar. Um valor 0 significa que o jogador não está pressionando a tecla de seta para a esquerda ou para a direita. Um valor 1 significa que o jogador deseja virar à direita e -1 significa que deseja virar à esquerda.

Para produzir esses valores, introduzimos condições e o uso de Input. Uma condição começa com a palavra-chave if no GDScript e termina com dois pontos. A condição é a expressão entre a palavra-chave e o final da linha.

Para verificar se uma tecla foi pressionada neste quadro, chamamos Input.is_action_pressed(). O método pega uma string de texto que representa uma ação de entrada e retorna true se a ação for pressionada, caso contrário, false.

As duas ações que usamos acima, “ui_left” e “ui_right”, são predefinidas em cada projeto Godot. Eles são acionados respectivamente quando o jogador pressiona as setas esquerda e direita no teclado ou esquerda e direita no D-pad do gamepad. Você pode ver e editar ações de entrada em seu projeto acessando Project -> Project Settings e clicando na aba Input Map.

Por fim, usamos a direction como multiplicador quando atualizamos a rotação do node: rotation: rotation += angular_speed * direction * delta. Se você executar a cena com este código, o ícone deverá girar quando você pressionar Esquerda e Direita.

Movendo-se ao pressionar “para cima”

Para nos movermos apenas ao pressionar uma tecla, precisamos modificar o código que calcula a velocidade. Substitua a linha que começa com var speed pelo código abaixo.

var velocity = Vector2.ZERO
if Input.is_action_pressed("ui_up"):
	velocity = Vector2.UP.rotated(rotation) * speed

Inicializamos a velocity com um valor Vector2.ZERO, outra constante do tipo Vector integrado que representa um vetor 2D de comprimento 0. Se o jogador pressionar a ação “ui_up”, atualizamos o valor da velocidade, fazendo com que o sprite avance.

Roteiro completo

Aqui está o arquivo sprite_2d.gd completo para referência.

extends Sprite2D

var speed = 400
var angular_speed = PI


func _process(delta):
	var direction = 0
	if Input.is_action_pressed("ui_left"):
		direction = -1
	if Input.is_action_pressed("ui_right"):
		direction = 1

	rotation += angular_speed * direction * delta

	var velocity = Vector2.ZERO
	if Input.is_action_pressed("ui_up"):
		velocity = Vector2.UP.rotated(rotation) * speed

	position += velocity * delta

Se você executar a cena, agora poderá girar com as teclas de seta para a esquerda e para a direita e avançar pressionando para cima.

Em resumo, cada script no Godot representa uma classe e estende uma das classes integradas do mecanismo. Os tipos de node dos quais suas classes herdam dão acesso a propriedades, como rotation e position no caso do nosso sprite. Você também herda muitas funções, que não usamos neste exemplo.

No GDScript, as variáveis que você coloca no topo do arquivo são as propriedades da sua classe, também chamadas de variáveis-membro. Além de variáveis, você pode definir funções, que, em sua maioria, serão os métodos de suas classes.

Godot fornece diversas funções virtuais que você pode definir para conectar sua classe ao mecanismo. Isso inclui _process(), para aplicar alterações ao nó a cada quadro, e _unhandled_input(), para receber eventos de entrada, como pressionamentos de teclas e botões, dos usuários. O Input único permite que você reaja à entrada dos jogadores em qualquer lugar do seu código. Em particular, você poderá usá-lo no loop _process().

FAQ Rápido

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.

BioWare abraça suas raízes narrativas em um RPG single player; Assista uma emocionante sequência de gameplay estendida que prepara a história e os desafios
TEAMGROUP na Computex 2024 apresenta novos produtos com o lema: "Elevate Gaming . Empower AI"
Saiba se vale a pena jogar Fabledom
Quer dar vida aos seus modelos 3D com texturas impressionantes? Continue lendo para aprender tudo sobre o processo de mapeamento UV do Blender!
Saiba mais sobre a espetacular memória RAM DELTA TUF RGB DDR5