Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Nesta lição, começaremos a criar a lógica básica de movimento para nosso Player.

Usando apenas os Logic Bricks do Cave Engine, implementaremos uma mecânica simples de pulo através da lógica visual. Isso também ajudará você a entender uma das ideias mais importantes por trás dos Logic Bricks: como eventos, condições e ações trabalham juntas para controlar o comportamento do jogo.

Neste caso, a lógica será muito simples:

  1. Verifique se o jogador pressionou a tecla de pulo.
  2. Verifique se o Player tem permissão para pular.
  3. Se tudo estiver correto, chame a função de pulo do Character Component do Player.

Este é um bom primeiro exemplo porque pular é uma mecânica de jogo muito comum, mas também introduz a estrutura básica que você usará muitas vezes ao criar jogos com Logic Bricks.

1. Adicionando Pulo

Para começar a criar a lógica de movimento do Player, primeiro precisamos obter os Eventos do jogo.

O objeto Eventos dá acesso a informações relacionadas à entrada, como teclas do teclado, botões do mouse e outras verificações de eventos que ocorrem durante o jogo.

Dentro da área de edição dos Logic Bricks, clique com o botão direito para abrir o menu de busca de nós.

Para encontrar rapidamente um nó, use o campo de busca identificado pelo ícone da lupa e digite o nome do nó que você deseja.

Os nós Entity, Scene e Events são usados com frequência, então já aparecem destacados no topo da janela de busca. Por isso, geralmente não é necessário procurá-los manualmente pelo nome.

Selecione Get Events para adicionar um nó de Eventos à sua lógica.

image.png

Agora adicione o nó Pressed.

Este nó será responsável por verificar se uma tecla específica está sendo pressionada pelo jogador.

Em outras palavras, esta é a condição que dirá à nossa lógica: "o jogador quer pular agora."

image.png

Selecione a tecla que será usada para executar o pulo.

Na maioria dos jogos, a tecla Espaço é comumente usada para pular, então a utilizaremos aqui também.

image.png

Após configurar a tecla de pulo, precisamos verificar se essa tecla foi realmente pressionada pelo jogador.

Para isso, usaremos um nó If (Bool).

O nó If (Bool) recebe um valor booleano, que significa um valor que pode ser True ou False. Se a condição for verdadeira, a lógica continua pelo saída True. Se a condição for falsa, continua pela saída False.

Neste caso, a condição será se a tecla Espaço está pressionada ou não.

image.png

Agora, da mesma forma que adicionamos o nó Events, também precisamos obter nossa Entity atual.

Isso é importante porque a ação de pulo não pertence ao objeto Eventos. O objeto Eventos apenas nos diz se a tecla foi pressionada. O comportamento real do pulo pertence à Entity do Player, mais especificamente ao seu Character Component.

Através do nó Entity, poderemos acessar os componentes anexados ao Player.

image.png

A partir da Output do Character Component, arraste uma conexão e procure por Jump.

Este nó será responsável por executar o pulo do personagem quando a condição for satisfeita.

Portanto, neste ponto, estamos basicamente dizendo:

"Quando o jogador pressiona a tecla de pulo, obtenha o Character Component do Player e chame sua função Jump."

image.png

Este será o fluxo principal da lógica de pulo:

Entity → Character Component → Jump

Com este fluxo, acessamos o componente do personagem a partir da Entity e então usamos sua função de pulo.

image.png

Agora conecte a saída True do nó If (Bool) à entrada Flow do nó Jump.

Isso significa que quando a tecla Espaço é pressionada, a condição será verdadeira e o Player executará o pulo.

Se a tecla não for pressionada, a condição será falsa e nada acontecerá.

image.png

No entanto, para que essa lógica realmente funcione, ela precisa estar conectada a um evento de Flow.

Os Logic Bricks não são executados aleatoriamente. Eles precisam de um ponto de entrada, que é o nó que inicia o fluxo de execução.

O nó On Start é executado apenas uma vez, quando a Entity inicia. Isso é útil para lógica de inicialização, como definir variáveis, preparar referências ou configurar algo no início do jogo.

O nó On Update é executado a cada quadro. Isso é útil para lógica de jogo que precisa ser verificada constantemente, como movimento, entrada, controle de câmera ou qualquer coisa que possa mudar enquanto o jogo está em execução.

Como precisamos verificar continuamente se o jogador pressionou a tecla de pulo, conectaremos nossa lógica ao On Update.

Isso garante que a verificação da tecla de pulo aconteça constantemente durante o jogo.

image.png

Com essa lógica, o personagem já deve ser capaz de pular.

Para manter seus Logic Bricks organizados, você pode selecionar todos os nós usados para criar essa funcionalidade clicando e arrastando com o botão direito do mouse, ou selecionando-os individualmente enquanto segura Shift.

Após selecionar os nós, pressione C para criar um comentário.

Essa é uma prática de organização muito útil. À medida que sua lógica cresce, comentários ajudam você a separar visualmente diferentes partes do comportamento, como pulo, movimento, câmera, ataques, interações, e assim por diante.

Mesmo que a lógica seja simples agora, acostumar-se a organizar seus nós cedo facilitará muito a compreensão de seu projeto mais tarde.

image.png

image.png

2. Adicionando a Verificação do Solo

Neste ponto, você provavelmente notou um pequeno problema: se continuarmos pressionando a tecla Espaço, o personagem pode continuar pulando repetidamente.

Isso acontece porque nossa lógica ainda não verifica se o personagem está realmente permitido pular naquele momento. Ela apenas verifica se a tecla de pulo foi pressionada e, em seguida, imediatamente chama a função de pulo.

Na maioria dos jogos, não queremos que o jogador pule infinitamente no ar. Geralmente, o jogador só deve ser capaz de pular quando estiver tocando o chão.

Felizmente, resolver isso no Cave é muito simples.

Para isso, usaremos o nó On Ground.

O nó On Ground retorna um valor booleano indicando se o personagem está atualmente tocando o chão ou não.

Então agora, em vez de verificar apenas uma condição, verificaremos duas condições:

  1. A tecla de pulo está pressionada?
  2. O personagem está no chão?

Somente quando ambas as condições forem verdadeiras, o nó Jump deve ser executado.

A lógica se torna:

  • Primeiro, verifique se a tecla Espaço foi pressionada.
  • Se verdadeiro, verifique se o Player está no chão.
  • Se o Player estiver no chão, execute Jump.
  • Se o Player não estiver no chão, não faça nada.

Isso evita que o personagem pule infinitamente enquanto já está no ar.

image.png

Com essa verificação do solo adicionada, a lógica de pulo se torna muito mais correta para um controlador básico de jogador.

Agora o Player só pulará quando a tecla de pulo for pressionada e o Character Component informar que o Player está atualmente no chão. Esta é a estrutura básica que você usará para muitas ações de gameplay no Cave: primeiro verifique a entrada, depois verifique se a ação é permitida e só então execute a ação.