29 lines
1.0 KiB
C#
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;
|
|
}
|
|
}
|
|
} |