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