- Home /
Global Fog On/Off not working right.
In the Render Settings > I setup my fog (Color,Density,So on) and Checked it On. And in my script i have it set to Disable it at start up, which it does. But when i press P i can see the Fog turn on (1/2 a Second) then it shuts off again.
When i walk into my Colliders, they are tagged FogOn/FogOff, and both Cubes have a Collider > Trigger but nothing happens at all. There is no errors, besides it not Turning On or Off when i hit the Collider, or press P it Toggles but remains off.
function Update(){
RenderSettings.fog = false;
if (Input.GetKeyDown("p")){
RenderSettings.fog = !RenderSettings.fog;
}
}
function OnTriggerEnter(other : Collider) {
if(other.tag == "FogOn") {
RenderSettings.fog = true;
} else if(other.tag == "FogOff") {
RenderSettings.fog = false;
}
}
function OnTriggerExit(other : Collider){
if(other.tag == "FogOn") {
Destroy(gameObject);
} else if(other.tag == "FogOff") {
Destroy(gameObject);
}
}
I know i am missing something, i was thinking the (RenderSettings.fog = true;) was over riding the P Key, but why is the Colliders not Activating?
Answer by clunk47 · Nov 30, 2013 at 08:38 PM
You have fog always equal to false in Update().
function Update(){
RenderSettings.fog = false;....
This statement is not inside of an if(), it's just in Update itself. Try creating a boolean or something like below, and only have fog enabled if a certain condition is met. For example you can toggle var fogOn which is the bool in my example, inside your Trigger events.
Try something like this for testing:
#pragma strict
var fogOn : boolean;
function Start()
{
fogOn = RenderSettings.fog;
}
function Update ()
{
RenderSettings.fog = fogOn;
if(Input.GetKeyDown(KeyCode.F))
fogOn = !fogOn;
}
Ok thank, i updated my script not it's working correctly. Is there a way to make it fade In/Out?
#pragma strict
private var fogOn : boolean;
private var density : float;
private var $$anonymous$$ : float = 0.0f;
private var max : float;
private var fade : float = 0.25f;
function Start()
{
fogOn = RenderSettings.fog;
density = RenderSettings.fogDensity;
max = density;
}
function Update ()
{
RenderSettings.fogDensity = density;
if(Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.F))
fogOn = !fogOn;
if(fogOn && density < max)
density += fade * Time.deltaTime;
if(!fogOn && density > $$anonymous$$)
density -= fade * Time.deltaTime;
if(density <= $$anonymous$$)
{
density = $$anonymous$$;
RenderSettings.fog = false;
}
else
RenderSettings.fog = true;
}
Thanks again, now it looks more realistic as i walk into it. I appreciate all the help, i noted you in the Script credits.
Your answer
Follow this Question
Related Questions
Appear and Dissapear: Fog 1 Answer
Internal collisions 1 Answer
fog not displaying at all. 1 Answer
Smooth fog disapearing/aperaing effect 0 Answers
Trying to change fog when entering a collider trigger! 0 Answers