Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class ParallaxLayer : MonoBehaviour
- {
- [SerializeField] [Tooltip("Leave empty to automatically grab the camera.")] private Transform _followTransform;
- [Space]
- [SerializeField] private Vector3 movementScale = new Vector3(2f, 1f, 1f);
- [SerializeField] private Vector3 offsetPosition = new Vector3(0f, 0f, 0f);
- [SerializeField] [Tooltip("Manually set the offset or check this box to work it out automatically.")] private bool autoOffset;
- [Space]
- [SerializeField] private bool axisXDisabled = false;
- [SerializeField] private bool axisYDisabled = true;
- [SerializeField] private bool axisZDisabled = true;
- [Space]
- [SerializeField] private bool parallaxDisabled;
- private Vector3 _originalPosition;
- private Vector3 _moveToPosition;
- private float _xPosition;
- private float _yPosition;
- private float _zPosition;
- private void Start()
- {
- if (!_followTransform) { _followTransform = Camera.main.transform; }
- if (autoOffset) { offsetPosition = transform.position - _followTransform.position; }
- _originalPosition = transform.position;
- }
- private void LateUpdate()
- {
- if (parallaxDisabled) { return; }
- if (axisXDisabled) { _xPosition = _originalPosition.x; }
- else { _xPosition = _followTransform.position.x + offsetPosition.x; }
- if (axisYDisabled) { _yPosition = _originalPosition.y; }
- else { _yPosition = _followTransform.position.y + offsetPosition.y; }
- if (axisZDisabled) { _zPosition = _originalPosition.z; }
- else { _zPosition = _followTransform.position.z + offsetPosition.z; }
- _moveToPosition = Vector3.Scale(new Vector3(_xPosition, _yPosition, _zPosition), movementScale);
- transform.position = _moveToPosition;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment