using UnityEngine; namespace Aula11 { /// /// Desloca uma camada do fundo para a esquerda, mais devagar quanto mais distante ela está, /// e a recoloca a cada imagem percorrida. O Sprite Renderer usa Draw Mode = Tiled. /// [RequireComponent(typeof(SpriteRenderer))] public class ParallaxCamada : MonoBehaviour { [Header("Referência")] [SerializeField] private ControladorJogo controladorJogo; [Header("Movimento")] [Tooltip("Velocidade dos portais, em unidades/s.")] [Min(0f)] [SerializeField] private float velocidadeReferencia = 3f; [Tooltip("Fração da velocidade dos portais: 0 = parada, como no infinito; 1 = junto com os portais.")] [Range(0f, 1f)] [SerializeField] private float fator = 0.5f; private float larguraImagem; private float xInicial; private void Awake() { // TODO 1: guarde em larguraImagem a largura, em unidades, de UMA cópia da imagem // (o sprite, não o Size do Sprite Renderer em modo Tiled). xInicial = transform.position.x; } private void Update() { if (controladorJogo == null || !controladorJogo.PartidaAtiva) return; // TODO 2: desloque a camada para a esquerda a velocidadeReferencia * fator // unidades por segundo. // TODO 3: quando a camada tiver andado uma imagem inteira desde xInicial, // devolva-a uma largura para a direita. A cópia seguinte ocupa o // lugar da anterior, e o salto não aparece. } } }