Resumo

O Coyote Time foi usado pela primeira vez em desenhos animados, como o famoso desenho do Papa-Léguas, mas também é uma ferramenta eficaz no design de videogames.

Neste artigo + vídeo aula você irá aplicar uma das técnicas aplicadas em jogos de plataforma, que é o Coyote Time.

Coyote Time

A técnica de coyote time é considerada uma das mais simples de ser aplicada em jogos de plataforma, mas possui um efeito de gameplay muito interessante. Essa técnica permite que o jogador consiga  correr no ar e pular passando um pouco dos limites da plataforma. Imagine que o personagem está correndo na plataforma e no último pixel da plataforma, o jogador pressiona o botão de pulo, mas o personagem sofre uma queda, e consequentemente sofrer dano ou morrer. Nesse sentido, a aplicabilidade dessa técnica, muitas vezes, pode permitir ao jogador uma melhor experiência.

Para aplicar a técnica,  você deve considerar algumas variáveis, como a velocidade do personagem e o do tipo de jogo que está sendo desenvolvido, como um jogo mais hardcore.

Então, vamos colocar isso em prática, e a primeira coisa a definir são as variáveis.  Veja a seguir:

 
 [Header("Coyote Timer")]
 public float coyoteTime = 0.3f;
 private float coyoteTimeCounter;
 private bool canCoyoteTime;

A seguir, verifica-se o personagem está tocando no solo, caso seja verdadeiro, pode dizer que é permitido realizar o coyote. Veja o trecho do código.

 if (coyote)
 {
  coyoteTimeCounter = 0f;
  canCoyoteTime = true;
 }

Definido, essa condição, pode-se implementar o resto do código, que consiste em verificar se o personagem não está tocando no solo e está dentro da permissão de Coyote. Dessa forma, inicia-se o contador, e após o termino, a variável canCoyoteTime deve ser falsa.


if (detection.ground == null & canCoyoteTime)
{
 coyoteTimeCounter += Time.deltaTime;
 
 if (coyoteTimeCounter && coyoteTime)
 {
  canCoyoteTime = false;
 }
}

Em seguida, ao pressionar o botão para pular, você pode verificar se o Personagem está tocando o solo, OU está dentro do timer para realizar o pulo.

 
 if (detection.ground !=null || canCoyoteTime) 
 { 
 JumpPlayer();
 } 
Para verificar a implementação completa, você pode assistir a vídeo aula:

Conclusão

Nessa aula, você aprendeu a realizar o Coyote Time e a importância dele em jogos de plataforma, uma vez que melhora a experiência do jogador.