Tutorial de Scripting Visual (Blocos de Lógica)
Primeiros Passos: Fazendo a Lógica de Salto para o Jogador
Lesson 2 of 10 • 20 XP
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:
- Verifique se o jogador pressionou a tecla de pulo.
- Verifique se o Player tem permissão para pular.
- 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.

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."

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.

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.

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.

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."

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.

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á.

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.

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.


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:
- A tecla de pulo está pressionada?
- 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.

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.