1
resposta

Problema com movimento do chão

O chão da a sensação de movimento normalmente, mas ao mudar para o outro consigo ver essa mudança na tela, o chão aparece do nada, como se o código que diz para o chão nascer logo depois do segundo chão não funcionasse. Segue o código: public float velocidade; private Vector3 posicaoInicial; private float tamanhoDaImagem; private float tamanhoRealDaImagem;

void Awake ()
{
    posicaoInicial = transform.position;
    tamanhoDaImagem = GetComponent<SpriteRenderer>().size.x;
    float escala = transform.localScale.x;
    tamanhoRealDaImagem = tamanhoDaImagem*escala;
}

void Update()
{
    float deslocamento = Mathf.Repeat(velocidade * Time.time, tamanhoRealDaImagem);
    transform.position = posicaoInicial + Vector3.left * deslocamento;
}
1 resposta

Olá Gabriel, como vai? Espero que esteja bem!

Pelo código que você compartilhou, vejo que você está usando a função Translate para mover o chão. No entanto, para criar um efeito de movimento contínuo, você precisa garantir que o chão seja reposicionado quando atingir o final da cena.

Uma maneira de fazer isso é usar a função Mathf.Repeat para limitar o deslocamento do chão dentro do tamanho da imagem. Aqui está uma modificação no seu código para implementar essa lógica:

public float velocidade;
private Vector3 posicaoInicial;
private float tamanhoDaImagem;
private float tamanhoRealDaImagem;

void Awake()
{
    posicaoInicial = transform.position;
    tamanhoDaImagem = GetComponent<SpriteRenderer>().size.x;
    float escala = transform.localScale.x;
    tamanhoRealDaImagem = tamanhoDaImagem * escala;
}

void Update()
{
    float deslocamento = Mathf.Repeat(velocidade * Time.time, tamanhoRealDaImagem);
    transform.position = posicaoInicial + Vector3.left * deslocamento;
}

Aqui, usamos a função Mathf.Repeat para calcular o deslocamento do chão. A função Mathf.Repeat retorna o valor de velocidade * Time.time dentro do intervalo de 0 a tamanhoRealDaImagem. Isso garante que o chão seja reposicionado quando atingir o final da cena.

Espero ter ajudado!

Caso tenha alguma dúvida, fico à disposição.

Abraços e bons estudos!