29 lines
1.0 KiB
C#

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