- Home /
 
               Question by 
               bobrovapaula · Apr 19, 2019 at 06:58 PM · 
                unity 2dbackgroundparallax  
              
 
              Parallax Lag issue...
 using System.Collections;
 using UnityEngine;
 
 public class Parallaxing : MonoBehaviour
 {
     public Transform[] backgrounds;  // Array of all the back - and foregrounds to be parallaxed
     private float[] parallaxScales;  // The proportion of the cameras movement to move the backgrounds by
     public float smoothing = 1f;     // How smooth the parallax is going to be. Make sure to set this above 0
 
     private Transform cam;           // Reference to the main cameras transform
     private Vector3 previousCamPos;  // The position of the camera in the previous frame
 
 
     // Is called before Start(). Great for references
     void Awake()
     {
         // set up the camera references
         cam = Camera.main.transform;
     }
 
 
     // Start is called before the first frame update
     void Start()
     {
         // The previous frame had the current frame's camera position
         previousCamPos = cam.position;
 
         // assigning coresponding parallaxScales
         parallaxScales = new float[backgrounds.Length];
         for (int i = 0; i < backgrounds.Length; i++)
         {
             parallaxScales[i] = backgrounds[i].position.z * -1;
         }
     }
 
     // Update is called once per frame
     void Update()
     {
 
         // for each background
         for (int i = 0; i < backgrounds.Length; i++)
         {
             // the parallax is the opposit of the camera movement because the previous frame multiplied by the scale
             float parallax = (previousCamPos.x - cam.position.x) * parallaxScales[i];
 
             // set a target x pos witch is the current pos plus the parallax
             float backgroundTargetPosX = backgrounds[i].position.x + parallax;
 
             // create a target pos which is the background's current pos with it's target x pos
             Vector3 backgroundTargetPos = new Vector3(backgroundTargetPosX, backgrounds[i].position.y, backgrounds[i].position.z);
 
             // face between current pos and the target position using lerp
             backgrounds[i].position = Vector3.Lerp(backgrounds[i].position, backgroundTargetPos, smoothing * Time.deltaTime);
 
         }
 
         // set the previous camPos to the camera's position at the end of the frame
         previousCamPos = cam.position;
     }
 }
 
               Comment
              
 
               
              When I move the player, the background lags. The further away the background is the more it seems to lag...
Your answer
 
 
             Follow this Question
Related Questions
2D Parallax Background 4 Answers
Leapfrog background set pieces as camera scrolls? 2 Answers
The Parallax goes way too fast 2 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                