29 lines
1020 B
C#
29 lines
1020 B
C#
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;
|
|
}
|
|
}
|
|
} |