3
respostas

Altura dos obstáculos não muda

Olá, professor.

Segui exatamente as explicações apresentadas no curso porém os obstáculos não mudaram. Tentei colocar uma variável pra cada ponto de mínimo e máximo e também não mudou nada. Alterando com os números diretamente, sem usar a variável e o SerializeField também não houve nenhuma mudança. Resolvi então seguir com o projeto pois sabia que algumas lições à frente você disponibilizaria o arquivo que está usando nos vídeos, porém ao usar esse arquivo o problema persistiu. Será que é algum problema com a Unity instalada no meu pc?

Segue o código do Obstáculo:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Obstaculo : MonoBehaviour {
    [SerializeField]
    private float velocidade;
    [SerializeField]
    private float variacaoDaPosicaoY;

    private void Awake()
    {
        this.transform.Translate(Vector3.up * Random.Range(-variacaoDaPosicaoY, variacaoDaPosicaoY));
    }

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

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

    private void Destruir()
    {
        GameObject.Destroy(this.gameObject);
    }
}

Obrigado pela ajuda!

3 respostas

Oi Gabriel, tudo bom?

As vezes esse método Translate da Unity não é muito confiável.

tenta alterar a posição diretamente, por exemplo:

this.transform.position  += Vector3.up * Random.Range(-variacaoDaPosicaoY, variacaoDaPosicaoY);

Olá, Bugan.

Infelizmente não deu certo. Após algumas tentativas, joguei o script direto nos obstáculo de cima, abrindo a setinha do prefab, que existe tanto o arquivo com a parte de cima do obstáculo quanto a parte de baixo. Acabou funcionando. De alguma forma o prefab não está usando a variável da posição para seus dois arquivos filhos, engraçado que a da velocidade funciona normalmente. Pensei então em continuar com o script direto e somente na parte de cima dos Obstáculos e criar um outro script dizendo apenas que a parte de baixo deve ter uma diferença padrão ao que se diz o transform do Y e em relação ao obstáculo de cima, no entanto não consegui criar esse script, pois não consigo "puxar" no script que ele deve usar diretamente a parte de cima do obstáculo, o arquivo/imagem. Também não consegui fazer com que esse script entenda essa diferença que será padrão entre os dois obstáculos. Essa ideia é viável? Se sim, pode me ajudar a criar o script? Obrigado pela ajuda!

Oi Gabriel, tudo bom?

Vc falou que o obstáculo estava utilizado a variável de velocidade e não a de posição. Vc fez as alterações em uma instancia de prefab que estava direto na cena?

Se você fez alterações em um prefab que estava na cena, é preciso clicar no botão de "apply" para que as alterações sejam salvas no arquivo de prefab que serve de base para o gerador.

Como o script funcionou quando você colocou ele diretamente no prefab do projeto o mais provavel é que vc tenha feito alterações em uma instancia e não salvou essas alterações no prefab de fato.