Unity2D Sprite Fading Issues

Hello!

I’ve posted a similar question before, with no answer, however I’ve improved coding-wise and have scratch coded this so far. My issue is that A. This function does the same fadeIn/Out regardless (I recognize the code is the same for both, I’m just not sure what to do to reverse it) and B. the FadeIn/Out variables aren’t resetting back to false after they fade.

What am I doing wrong?
using UnityEngine;
using System.Collections;

public class FadeIn : MonoBehaviour {

	public SpriteRenderer sprite;
	public float fade = 0f;
	public Color spriteColor = Color.white;
	public bool fadeIn = true;
	public bool fadeOut = false;
	private float startTime = 0.0f;
	public float fadeInTime = 1.5f;
	public float fadeOutTime = 1.5f;

	// Use this for initialization
	void OnTriggerEnter2D () {
		startTime = Time.time;
		fadeIn = true;
	}

	void OnTriggerExit2D () {
		startTime = Time.time;
		fadeOut = true;
	}
	
	// Update is called once per frame
	void Update () {
		if(fadeIn==true){
			print ("EnteringCar");
			fade = Mathf.Lerp(0f, 1f, (Time.time - startTime) / fadeInTime);
			spriteColor.a = fade;
			sprite.color = spriteColor;

		}
		if(fade > 1){
			fadeIn = false;

	}
		if(fadeOut==true){
			print ("ExitingCar");
			fade = Mathf.Lerp(0f, 1f, (Time.time - startTime) / fadeOutTime);
			spriteColor.a = fade;
			sprite.color = spriteColor;

		}
		if(fade < 1){
			fadeOut = false;

		}
}
}

First off, this is redundant:

Mathf.Lerp(0f, 1f, (Time.time - startTime) / fadeInTime);

It’s functionally identical to:

Mathf.Clamp01((Time.time - startTime) / fadeInTime);

Second, to make it fade out, you’ll want to use (1-fade) as the alpha value.

Finally, you want to put those checks to disable the fadeIn/fadeOut variables within the initial if checks. If they aren’t on to begin with, then they shouldn’t be detecting to turn off.

Hopefully that will get you started in the right direction.