using UnityEngine; namespace RR.Game2D.Core { 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; } } }