Criando um sistema de diálogo em Godot com GDScript
LarLar > blog > Criando um sistema de diálogo em Godot com GDScript

Criando um sistema de diálogo em Godot com GDScript

Jul 06, 2023

Adicione um pouco de personalidade e experiência aos seus personagens com um sistema de diálogo contundente.

No desenvolvimento de jogos, uma jogabilidade envolvente e uma narrativa cativante são fundamentais para criar experiências memoráveis. Uma ferramenta poderosa que pode ajudá-lo a conseguir isso é um sistema de diálogo.

Com um sistema de diálogo bem implementado, os personagens podem se comunicar, compartilhar informações e interagir com o jogador, adicionando profundidade e imersão ao jogo.

Comece criando a base do seu jogo. Para este exemplo, configure um ambiente 2D simples com um personagem controlável que pode se mover usando as teclas de seta.

O código usado neste artigo está disponível neste repositório GitHub e é gratuito para uso sob a licença do MIT.

Comece criando uma nova cena para o seu personagem jogador. Dentro desta cena, adicione os componentes necessários. Criar umaPersonagemBody2D nó para representar o corpo do personagem do jogador. Anexe umColisãoForma2Dcom formato retangular para definir a área de colisão do jogador.

Agora, adicione movimentação de personagens e interação com plataformas usando GDScript. Substitua o script padrão do nó CharacterBody2D pelo seguinte código:

Este script permite que seu personagem se mova para a esquerda, direita, para cima e para baixo com base nas entradas das teclas de seta. Omover_e_collideA função garante que o personagem interaja com as plataformas e responda às colisões.

Agora você pode começar a criar o sistema de diálogo. O primeiro passo é adicionar uma caixa de diálogo que exibirá texto quando seu personagem interagir com objetos ou NPCs específicos.

Na tuaPersonagemBody2Dscript, introduza mais algumas variáveis ​​para lidar com a caixa de diálogo e seu conteúdo:

Odialog_boxserá responsável por exibir o texto do diálogo, enquanto obotão fecharpermitirá que os jogadores fechem a caixa de diálogo quando necessário.

No_prepararfunção, crie e inicialize a caixa de diálogo:

Agora você pode se concentrar na exibição do texto na caixa de diálogo. Você pode fazer com que o texto ocupe mais de uma linha e role-o, revelando uma linha de texto por vez.

Modifique seu_processo_físicofunção para lidar com a exibição de linhas de diálogo:

Este segmento de código verifica se otemporizador_de_linha é maior que 0. Se for, diminui o temporizador pelo valor delta. Se o temporizador não estiver ativo e houver mais linhas de diálogo para exibir, ele chama oshow_next_dialogue_linefunção.

Implementar oshow_next_dialogue_linefuncionar da seguinte forma:

Esta função atualiza o texto dentro da caixa de diálogo com a linha de diálogo atual e incrementa olinha_atual índice. Otemporizador_de_linhagarante que cada linha seja exibida por um breve período antes de avançar para a próxima linha.

Agora, você pode dar aos jogadores a capacidade de fechar a caixa de diálogo e continuar jogando. Faça isso com um botão fechar que, ao pressioná-lo, oculta a caixa de diálogo e permite ao jogador retomar sua jornada.

Primeiro, modifique o_prepararfunção para criar um botão fechar e anexar sua funcionalidade.

Este código cria uma instância doBotão classe e personaliza sua aparência e posição. Ele também conecta opressionadosinal para o_on_close_button_pressedfunção.

Agora implemente o_on_close_button_pressed função. Nesta função, defina a visibilidade da caixa de diálogo e do botão Fechar parafalso . Isso oculta efetivamente a interface de diálogo do player.

Lembre-se de redefinir olinha_atualindex como 0 para garantir que o diálogo comece do início na próxima vez que o jogador iniciar uma conversa:

Com essas mudanças, os jogadores poderão dialogar e fechar a caixa de diálogo quando estiverem prontos para continuar explorando ou interagindo com o mundo do jogo.