How to change the camera background colour with player height.
Hey I currently am making a 2D side scroller and I am trying to get my background colour to change to give the effect of flying into space (if they get that high). I have been able to get the background colour of the main camera to change when the player hits a certain height but I can't get the desired effect if the player is falling back to earth.
 using UnityEngine;
 using System.Collections;
 
 public class CameraBackGround : MonoBehaviour {
 
     private GameObject playerMovement;
 
     public Color backgroundSky = Color.blue;
     public Color backgroundSpace = Color.black;
 
     private float transfer = 10f;
     private float deltaTime = 0f;
 
     void Start()
     {
         playerMovement = GameObject.FindGameObjectWithTag("Player");
     }
 
     void Update()
     {
         
         if(playerMovement.transform.position.y >= 10f)
         {
             dayToNight();
         }else if(playerMovement.transform.position.y > 2f && playerMovement.transform.position.y < 10f)
         {
             nightToDay();
         }
         
     }
 
     void dayToNight()
     {
         deltaTime += Time.deltaTime;
         GetComponent<Camera>().backgroundColor = Color.Lerp(backgroundSky, backgroundSpace, deltaTime);
     }
 
     void nightToDay()
     {
         deltaTime += Time.deltaTime;
         GetComponent<Camera>().backgroundColor = Color.Lerp(backgroundSpace, backgroundSky, deltaTime);
     }
 }
Basically if my player reaches a certain height then the transition between the two colours should start but if the player falls back to the ground then I want it to return to the original background colour.
Answer by nonathaj · Feb 24, 2016 at 09:14 AM
I think you don't have a full understanding of how the Lerp function works. The t in the Lerp function is a value between 0 and 1 that determines the interpolation between color a and b respectively.
- If t == 0, Lerp returns a 
- If t == 1, Lerp returns b 
- If t == 0.5, lerp returns halfway between a and b 
So by inputting Time.deltaTime (which is the time since the last frame, a value of 0.016f with 60 frames per second), you will never actually reach your objective color of b.
I wrote up a quick script which does mostly what you are asking for, hopefully it is helpful: http://pastebin.com/atsdK1sm
Your answer
 
 
             Follow this Question
Related Questions
Camerashake doesn´t work expected in Build c# 0 Answers
Transform.RotateAround not rotating around specified game object. 0 Answers
transform.position not applying to my camera. 1 Answer
How to change camera position on trigger while camera is being updated each frame by LateUpdate 0 Answers
Error in script? 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                