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!

Pesquisar nos Tutoriais

Digite uma frase ou várias palavras-chave separadas por vírgulas para pesquisar.

Modelos 3D, tutoriais e recursos de computação gráfica de Francesco Milanese. As licenças de uso dos modelos 3D podem ser adquiridas nas lojas externas indicadas pelos links nas respectivas páginas, conforme os termos de licença aplicáveis. Francesco Milanese — Número de IVA: 06321250877. Contato: info@francescomilanese.com


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