Oi Yan! Tudo bem?
No script do piso, estamos utilizando Time.time
para calcular o deslocamento total do objeto desde o início do jogo. A fórmula que você mencionou, deslocamento = velocidade * Time.time
, é usada para determinar o quanto o objeto deve se mover ao longo do tempo.
Vamos considerar um exemplo prático:
No início do jogo:
velocidade = 1
Time.time = 1
deslocamento = 1 * 1 = 1
Depois de 100 segundos:
velocidade = 1
Time.time = 100
deslocamento = 1 * 100 = 100
O deslocamento é a distância total que o objeto se moveu desde o início do jogo. O que pode estar causando confusão é como esse deslocamento é aplicado ao movimento do piso.
Para criar o efeito de looping contínuo, utilizamos a função Mathf.Repeat()
. Essa função limita o deslocamento ao tamanho da imagem do piso, fazendo com que ele "volte" para a posição inicial quando ultrapassa seu próprio tamanho. A fórmula fica assim:
float deslocamento = Mathf.Repeat(this.velocidade * Time.time, this.tamanhoRealDaImagem);
this.transform.position = this.posicaoInicial + Vector3.left * deslocamento;
Aqui, Mathf.Repeat()
garante que deslocamento
nunca ultrapasse tamanhoRealDaImagem
. Então, mesmo que Time.time
continue aumentando, deslocamento
será sempre um valor entre 0
e tamanhoRealDaImagem
. Isso cria a ilusão de um piso infinito.
Espero que isso ajude a esclarecer como o tempo e a velocidade estão sendo usados no seu código.
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.