1
resposta

[Dúvida] não está gerando novos obstáculos

Segui o passo a passo da aula, mas o gerador de obstáculos para. Os códigos estão certos, seguindo o modelo da aula e também da resposta do tópico no fórum, mas continua não gerando mesmo assim. Já não sei o que fazer

`` private void Update() { transform.Translate(Vector3.left * velocidade * Time.deltaTime); }

private void OnTriggerEnter2D(Collider2D outro)
{
    Destruir();
}

private void Destruir()
{
    Destroy(gameObject);
}

}

do gerador de obstáculos

private void Update() { this.cronometro -= Time.deltaTime; if (this.cronometro < 0) //não pode fechar aqui senão, não reinicia o crônometro { //todo objeto presente na unity é um "game object". pra mexer com ele, tem que instanciar. GameObject.Instantiate(this.manualDeInstrucoes, this.transform.position, Quaternion.identity); this.cronometro = this.TempoParaGerar; } }

1 resposta

Olá, Victor! Parece que você está tendo problemas com a geração de novos obstáculos no seu jogo. Vamos tentar resolver isso juntos.

Primeiramente, é importante verificar se o obstáculo está sendo destruído corretamente ao colidir com a barreira. No seu código, você tem a função OnTriggerEnter2D(Collider2D outro) que chama a função Destruir(). Isso parece estar correto, considerando que você seguiu as instruções da aula.

No entanto, o problema pode estar relacionado à geração de novos obstáculos. No seu código de geração de obstáculos, você tem a seguinte lógica no método Update():

private void Update()
{
    this.cronometro -= Time.deltaTime;
    if (this.cronometro < 0) //não pode fechar aqui senão, não reinicia o crônometro
    {
        GameObject.Instantiate(this.manualDeInstrucoes, this.transform.position, Quaternion.identity);
        this.cronometro = this.TempoParaGerar;
    }
}

Aqui, você está criando uma nova instância do obstáculo sempre que cronometro é menor que zero. Então, você redefine cronometro para TempoParaGerar.

Parece que o problema pode estar relacionado com a variável TempoParaGerar. Você precisa garantir que TempoParaGerar esteja definido para um valor que permita a geração de novos obstáculos em um intervalo de tempo adequado. Se TempoParaGerar for muito grande, pode parecer que os obstáculos não estão sendo gerados, pois o intervalo entre as gerações é muito longo.

Outro ponto a verificar é se a instância do obstáculo está sendo criada corretamente. Verifique se this.manualDeInstrucoes está referenciando o prefab do obstáculo corretamente. Além disso, certifique-se de que a posição de transformação (this.transform.position) está correta para a geração do obstáculo.

Espero que essas sugestões possam te ajudar a identificar o problema. Lembre-se, a programação é um processo de tentativa e erro, então não desanime! Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software