Advertisement
gameDevTeacher

Simple Parallax

Apr 16th, 2022
1,113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.48 KB | None | 0 0
  1. // Script 1
  2.  
  3. using UnityEngine;
  4. using System.Collections;
  5.  
  6. public class ParallaxOption : MonoBehaviour {
  7.  
  8.     public bool moveParallax;
  9.  
  10.     [SerializeField]
  11.     [HideInInspector]
  12.     private Vector3 storedPosition;
  13.  
  14.     public void SavePosition() {
  15.         storedPosition = transform.position;
  16.     }
  17.  
  18.     public void RestorePosition() {
  19.         transform.position = storedPosition;
  20.     }
  21. }
  22.  
  23. // Script 2
  24.  
  25. using UnityEngine;
  26. using System.Collections;
  27.  
  28. [ExecuteInEditMode]
  29. public class ParallaxLayer : MonoBehaviour {
  30.     public float speedX;
  31.     public float speedY;
  32.     public bool moveInOppositeDirection;
  33.  
  34.     private Transform cameraTransform;
  35.     private Vector3 previousCameraPosition;
  36.     private bool previousMoveParallax;
  37.     private ParallaxOption options;
  38.  
  39.     void OnEnable() {
  40.         GameObject gameCamera = GameObject.Find("Main Camera");
  41.         options = gameCamera.GetComponent<ParallaxOption>();
  42.         cameraTransform = gameCamera.transform;
  43.         previousCameraPosition = cameraTransform.position;
  44.     }
  45.  
  46.     void Update () {
  47.         if(options.moveParallax && !previousMoveParallax)
  48.             previousCameraPosition = cameraTransform.position;
  49.  
  50.         previousMoveParallax = options.moveParallax;
  51.  
  52.         if(!Application.isPlaying && !options.moveParallax)
  53.             return;
  54.  
  55.         Vector3 distance = cameraTransform.position - previousCameraPosition;
  56.         float direction = (moveInOppositeDirection) ? -1f : 1f;
  57.         transform.position += Vector3.Scale(distance, new Vector3(speedX, speedY)) * direction;
  58.  
  59.         previousCameraPosition = cameraTransform.position;
  60.     }
  61. }
  62.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement