using UnityEngine; namespace RR.Game2D.Core.Managers { public class Parallax : MonoBehaviour { [SerializeField][Range(-1f, 3f)] private float parallaxFactorX = 0.5f; [SerializeField][Range(-1f, 3f)] private float parallaxFactorY = 0.5f; [SerializeField] private bool lockYAxis = false; private Transform _cameraTransform; private Vector3 _previousCameraPosition; void Start() { if (Camera.main != null) _cameraTransform = Camera.main.transform; _previousCameraPosition = _cameraTransform.position; } void FixedUpdate() { Vector3 delta = _cameraTransform.position - _previousCameraPosition; if (lockYAxis) transform.position += new Vector3(delta.x * parallaxFactorX, 0, 0); else transform.position += new Vector3(delta.x * parallaxFactorX, delta.y * parallaxFactorY, 0); _previousCameraPosition = _cameraTransform.position; } } }