Загрузка данных


using UnityEngine;

public class TrueParallax : MonoBehaviour
{
    [Header("Ссылки на компоненты фона")]
    public SpriteRenderer backgroundRenderer; // Сюда перетащим Background
    public SpriteRenderer midgroundRenderer;  // Сюда перетащим Midground

    [Header("Скорость параллакса (от 0 до 1)")]
    [Range(0f, 1f)] public float backgroundSpeed = 0.1f; // Небо движется едва заметно
    [Range(0f, 1f)] public float midgroundSpeed = 0.5f;  // Деревья движутся быстрее

    private Vector2 backgroundOffset;
    private Vector2 midgroundOffset;
    private Vector3 previousCameraPosition;

    void Start()
    {
        // Запоминаем стартовую позицию камеры
        previousCameraPosition = transform.position;
    }

    void LateUpdate()
    {
        // Считаем, на сколько сместилась камера за этот кадр
        float deltaX = transform.position.x - previousCameraPosition.x;

        // Вычисляем новый сдвиг для текстур
        backgroundOffset.x += deltaX * backgroundSpeed * 0.05f;
        midgroundOffset.x += deltaX * midgroundSpeed * 0.05f;

        // Двигаем текстуру внутри Sprite Renderer
        if (backgroundRenderer != null)
            backgroundRenderer.material.mainTextureOffset = backgroundOffset;

        if (midgroundRenderer != null)
            midgroundRenderer.material.mainTextureOffset = midgroundOffset;

        // Сохраняем текущую позицию камеры для следующего кадра
        previousCameraPosition = transform.position;
    }
}