Neste breve tutorial de programação Unity 2D, vou mostrar como fazer a câmera seguir o personagem principal com um pequeno atraso em vez de instantaneamente, para que você possa criar transições mais suaves.



Transcrição do vídeo

Olá a todos! Neste breve tutorial de programação Unity 2D, vou mostrar como fazer a câmera seguir o personagem principal com um pequeno atraso em vez de instantaneamente, para que você possa criar transições mais suaves.

Este tutorial é destinado àqueles que já estão familiarizados com o conceito de Delta Time no Unity e, possivelmente, com interpolações como Slerp. Já abordei esses conceitos em outros tutoriais básicos, que você pode encontrar como vídeos em inglês no canal e como versões escritas, em vários idiomas, no meu site.

No exemplo que vou mostrar, vou escrever o código para o movimento ao longo do eixo X por simplicidade, mas ele pode ser facilmente estendido também para o movimento vertical ao longo do eixo Y.

Vamos começar a partir do script base, que restringe a posição da câmera à posição do personagem a ser seguido. O script, aqui chamado Camera Controller, já inclui imediatamente uma variável privada do tipo Transform que deve ser atribuída no editor ao objeto a ser seguido, para que sua posição possa ser recuperada.

Na função Update, temos uma variável do tipo float que recupera a coordenada X da posição do jogador e é usada na posição da câmera no lugar da coordenada X da própria câmera, em um valor chamado Camera X, para que a câmera siga o personagem instantaneamente.

A primeira variação que testamos usa Lerp, então introduzo uma variável privada chamada Follow Time, do tipo float, que pode ser ajustada no editor para configuração. Na função Update, utilizo a opção número 2 para definir a coordenada X da câmera, que agora é dada pelo resultado da função Lerp.

Lerp é uma função nativa do Unity que realiza uma interpolação linear entre a posição atual do objeto, dada por Transform Position, e a posição alvo, dada por Player Position. O parâmetro de interpolação é representado pela razão entre Delta Time e a variável Follow Time, o que permite controlar a velocidade com que a câmera se aproxima progressivamente da posição alvo e facilita ajustar esse comportamento também durante a execução no editor.

Com a função Lerp, a cada frame a câmera atualiza sua posição, aproximando-se progressivamente do alvo. Dessa forma, o movimento da câmera parece menos abrupto em comparação com um deslocamento instantâneo. No entanto, Lerp realiza uma interpolação linear sem amortecer a velocidade perto do destino, e isso pode tornar o movimento menos natural na fase final da aproximação. Para obter uma transição mais suave, entra em cena o método Smooth Damp.

Em seguida, disponibilizo duas novas variáveis, chamadas Smooth Time e Velocity. Em particular, Smooth Time é um float privado usado para ajustar a interpolação, assim como Follow Time no caso do Lerp. A variável Velocity é, por sua vez, um float passado ao método Smooth Damp para armazenar a velocidade atual durante a execução.

O método nativo Smooth Damp permite implementar um movimento amortecido e menos abrupto, no qual a velocidade diminui à medida que a câmera se aproxima da posição de destino. A variável Velocity representa a velocidade atual da câmera ao longo do eixo considerado. Velocity é passada ao método por referência e é atualizada automaticamente a cada frame durante a interpolação.

No código, a coordenada X da câmera agora é o resultado de uma interpolação realizada por Smooth Damp, conceitualmente semelhante ao Lerp porque interpola entre dois valores, mas produzindo uma transição mais suave e, na assinatura do método, utilizando também a variável float Velocity.

Smooth Damp pode ser visto como uma evolução do Lerp que introduz amortecimento progressivo da velocidade, tornando o movimento mais natural.

Bem, isso é tudo para este vídeo! Se você achou útil, pode me agradecer com um Like e se inscrevendo no canal. Até breve!

Este site tem como único objetivo apresentar alguns dos meus trabalhos, sem qualquer finalidade promocional. Observe que, no momento, não estou procurando - nem responderei a - solicitações de trabalhos personalizados, consultorias ou qualquer outro tipo de colaboração profissional.


INFORMAÇÕES DE POLÍTICA DE PRIVACIDADE AVANÇADAS E USO DOS FICHEIROS DE COOKIES