Contents

Como adicionar movimento do jogador em Godot usando GDScript

A implementação do movimento do jogador é um componente essencial do desenvolvimento de experiências cativantes no Godot Game Engine. Ao permitir a manipulação de personagens do jogo pelo usuário, a exploração de ambientes virtuais e a interação com diversos elementos do jogo, o movimento do jogador promove a imersão e a interatividade para uma experiência de jogo mais satisfatória.

Configurando o jogo Godot

Para iniciar o processo, estabeleça um novo projeto bidimensional dentro do ambiente de desenvolvimento do Godot Game Engine. Posteriormente, prossiga com a integração da locomoção do personagem ao seu jogo, implementando a seguinte série de ações:

Para criar uma nova cena no painel do sistema de arquivos do seu projeto, siga estas etapas:1. Clique com o botão direito do mouse no painel “FileSystem” em seu editor Unity para acessar seu menu de contexto.2. Nas opções disponíveis, selecione “Nova Pasta”.3. Forneça um nome descritivo para a pasta recém-criada, como"Cenas", que servirá como área de armazenamento para todas as cenas do seu jogo.4. Depois de criar a pasta “Scenes”, navegue de volta para a janela Project, onde você pode encontrá-la listada na seção Assets.5. Para criar uma nova cena 2D, retorne à janela Hierarquia, localize a pasta “Cenas” recém-criada e arraste-a para a tela ou para uma cena existente.6.

O código-fonte utilizado nesta publicação pode ser acessado por meio de um repositório GitHub, que concede permissão para seu uso sem ônus nos termos da licença MIT.

Adicionar um objeto 2D de corpo de personagem à cena pode ser obtido por meio de várias etapas, incluindo acessar a biblioteca de nós e selecionar o tipo de nó desejado. Aqui está um exemplo de como esse processo pode ser realizado em linguagem mais formal:1. Acesse a biblioteca de nós navegando até a pasta"Assets"no Unity. Isso pode envolver a pesquisa do arquivo que contém a biblioteca de nós ou a navegação pelos recursos disponíveis no próprio programa.2. Depois de localizar a biblioteca de nós, localize a categoria específica que contém os nós 2D do corpo do personagem. Isso provavelmente será rotulado como tal, com indicações claras de quais tipos de objetos estão incluídos nessa categoria.3. Selecione o tipo de nó desejado na lista fornecida. Neste caso, seria um “CharacterBody2D”.4.

Por favor, selecione o nó “CharacterBody2D” e certifique-se de que ele esteja destacado em sua visualização de cena. Depois que o nó for selecionado, navegue até a guia"Adicionar nó filho"localizada no painel"Propriedades". Em seguida, localize a opção “CollisionShape2D” e clique no ícone de sinal de mais (+) correspondente para criar uma nova instância deste nó. Depois de criar o “CollisionShape2D”, você pode ajustar suas propriedades selecionando-o na lista de nós filhos e modificando seu tamanho ou forma conforme necessário. Por exemplo, você pode optar por criar uma forma retangular que se aproxime das dimensões do personagem do jogador.

Em seguida, incorpore um elemento Sprite2D dentro da construção CharacterBody2D e selecione uma representação gráfica adequada para sua persona de jogador.

/pt/images/simple-godot-game.jpg

Adicionando o movimento do jogador usando a entrada do teclado

Agora você pode incorporar entradas de teclado para controlar o movimento do jogador no script “Player.gs”.

Modifique o objeto CharacterBody2D para incorporar entradas do usuário para movimento, estabeleça uma velocidade de movimento desejada com base nas direções de entrada, normalize a velocidade e utilize o método \_move\_and\_collide() dentro do método \_physics\_process() para atualizar a posição do personagem garantindo a detecção de colisão.

 extends CharacterBody2D

var speed = 300

func _physics_process(delta):
    var input_dir = Vector2.ZERO
    if Input.is_action_pressed("ui_left"):
        input_dir.x -= 1
    if Input.is_action_pressed("ui_right"):
        input_dir.x \+= 1
    if Input.is_action_pressed("ui_up"):
        input_dir.y -= 1
    if Input.is_action_pressed("ui_down"):
        input_dir.y \+= 1

    velocity = input_dir.normalized() * speed
    move_and_collide(velocity * delta)

Adicionando Rotação

Para incorporar um componente rotacional no movimento do jogador, atualize o arquivo Player.gs implementando as modificações necessárias no código existente. Isso permitirá que o personagem do jogador mantenha uma orientação consistente em relação ao seu movimento.

 extends CharacterBody2D

@export var speed = 400
@export var rotation_speed = 1.5

var rotation_direction = 0

func get_input():
    rotation_direction = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
    velocity = transform.x * (Input.get_action_strength("ui_up") - Input.get_action_strength("ui_down")) * speed

func _physics_process(delta):
    get_input()
    rotation \+= rotation_direction * rotation_speed * delta
    move_and_slide() 

Durante a locomoção, o jogador deve girar dentro da trajetória especificada. A velocidade de rotação do personagem pode ser regulada modificando o valor do parâmetro rotação\_velocidade.

/pt/images/player-rotation-godot-game.jpg

Adicionando o movimento do jogador usando a entrada do mouse

Incorporar o movimento do jogador através da entrada do mouse agora é viável, permitindo a realocação do jogador para o ponto de contato do cursor ou a facilitação da orientação do jogador em relação ao dispositivo apontador.

 extends CharacterBody2D

@export var speed = 300

func _physics_process(delta):
    if Input.is_action_just_pressed("click"):
        var target_position = get_global_mouse_position()
        var direction = (target_position-global_position).normalized()
        velocity = direction * speed * delta
        move_and_collide(velocity) 

A presente implementação permite que o personagem do jogador progrida na direção de um evento de clique do mouse detectado, com sua velocidade sendo manipulável por meio do ajuste da taxa de movimento especificada.

Além da rotação baseada no teclado, pode-se empregar um mouse para essa finalidade, incorporando a seguinte implementação:

 extends CharacterBody2D

func _physics_process(delta):
    var mouse_position = get_global_mouse_position()
    var target_direction = (mouse_position-global_position).angle()
    rotation = target_direction 

Nesta iteração do jogo, o avatar do jogador será orientado para a localização atual do cursor na tela.

Incluindo Recursos Adicionais

A incorporação de movimentos avançados do jogador além da tarifa padrão pode elevar a experiência geral do jogo. Existe uma infinidade de possibilidades atraentes que podem ser implementadas dentro do jogo para enriquecer e refinar as ações dos jogadores:

Pular

A incorporação de um mecanismo de salto no jogo fornece aos jogadores a capacidade de superar obstáculos, acessar plataformas elevadas e imbuir o ambiente virtual com uma dimensão adicional de interação do usuário. Ao regular o salto vertical e incorporar efeitos visuais, como sequências de animação, a experiência geral torna-se mais cativante e imersiva.

Dash ou Sprint

A agilidade confere ao jogador a capacidade de percorrer rapidamente curtas distâncias, facilitando tanto a evasão de adversários quanto a transversalidade de terrenos árduos. Além disso, esse atributo confere um aspecto de dinamismo à experiência de jogo e amplia a percepção de domínio exercida pelo participante sobre o ambiente virtual.

Deslizamento e Escalada em Paredes

A incorporação da mecânica de deslizamento e escalada na parede permite um nível elevado de interatividade com superfícies verticais, permitindo que os jogadores desçam paredes, executem saltos na parede e subam obstáculos específicos. Este elemento provou ser muito procurado no reino dos videogames de plataforma.

Mecânica de plataforma

Para melhorar a experiência geral de jogar jogos de plataforma, é essencial levar em consideração vários fatores, como gravidade, aceleração e desaceleração. Ao ajustar cuidadosamente esses elementos, pode-se obter uma sensação de movimento mais suave e autêntica no jogo. Esse processo de ajuste fino pode levar a uma experiência de jogo mais refinada e satisfatória para os jogadores.

Incorporar elementos complementares é crucial para melhorar a experiência de jogo. O segredo para introduzir efetivamente essas adições está em harmonizá-las e mesclá-las sem esforço com os princípios fundamentais de navegação do jogador. É essencial que cada componente extra complemente a dinâmica de movimento do jogador central e se alinhe com o ambiente geral do jogo.

Práticas recomendadas para adicionar movimento do jogador

A fim de aprimorar tanto a eficiência do código quanto a qualidade geral da experiência de jogo em um projeto Godot, é altamente recomendável aderir a certas técnicas recomendadas para incorporar o movimento do personagem. Ao fazer isso, o código-fonte resultante exibirá organização e otimização aprimoradas, levando a um processo de desenvolvimento mais simplificado e a uma experiência mais agradável para os jogadores.

Preocupações Separadas

Ao segregar o gerenciamento da entrada do jogador, locomoção do personagem e processamento de animação em funcionalidades distintas ou módulos de código, você pode melhorar a modularidade e a capacidade de manutenção da IA ​​do seu jogo. Essa abordagem permite depuração e modificação mais fáceis de componentes específicos sem afetar outras partes do sistema.

Ao implementar uma estratégia de separação de preocupações em uma base de código, torna-se possível alcançar maiores níveis de modularidade e facilidade de manutenção, ao mesmo tempo em que promove uma melhor colaboração nas equipes de desenvolvimento.

Usar hora delta

Ao determinar o movimento, é essencial multiplicar os parâmetros pela diferença de tempo entre os quadros, conhecida como tempo delta, para garantir um movimento contínuo em taxas de quadros variáveis. O conceito de tempo delta contabiliza a passagem do tempo desde o frame anterior e garante que o usuário vivencie uma progressão constante, independentemente da eficiência do sistema.

Limite a velocidade de movimento

É aconselhável impor um teto na velocidade atingível pelos jogadores dentro do ambiente do jogo, pois uma velocidade excessiva pode levar a consequências indesejáveis, como interrupção de simulações físicas e incongruências no reconhecimento de colisões. Ao impor essa restrição, você pode garantir que o jogo permaneça estável e funcional, preservando sua integridade.

Considere camadas físicas e máscaras de colisão

Godot permite a personalização de parâmetros de colisão para várias entidades dentro de um ambiente de jogo. Ao ajustar as camadas e máscaras apropriadas, pode-se ditar as interações entre os objetos durante a locomoção. Como ilustração, é concebível que o protagonista se una a barreiras substanciais enquanto atravessa, mas permeie obstruções transparentes ou imateriais sem interferência.

Adicionar feedback visual e de áudio

A implementação de efeitos visuais impressionantes e sugestões auditivas é um método eficaz para fornecer feedback interativo aos jogadores enquanto eles navegam por um ambiente virtual. Essas técnicas podem incluir a incorporação de partículas de poeira que se dispersam em resposta aos movimentos do personagem ou a produção de sons de passos realistas que ressoam com base no terreno percorrido pelo avatar. Esses elementos imersivos contribuem significativamente para aprimorar a experiência geral do jogador e o nível de envolvimento no mundo do jogo.

Tornando os jogos Godot mais envolventes com o movimento do jogador

A dinâmica de movimento refinada e reativa tem o potencial de elevar muito a gama geral de experiências do usuário. Seja perambulando por reinos expansivos, fugindo de adversários ou contemplando enigmas, a fluidez na locomoção cultiva uma sensação abrangente de imersão que cativa os usuários e mantém seu interesse.

Ao utilizar GDScript e o nó CharacterBody2D, pode-se facilitar experiências de jogo dinâmicas e gratificantes por meio da implementação do movimento do jogador. A liberdade de navegar e se relacionar com o meio digital imbui os jogadores de agência e promove um senso de conexão com o cenário virtual.