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;
}
}