Help! My script wont work! (88493)

Hi,
Im new to unity, I have begun making my first game!
Unfortunately I ran in to a problem. Every time you submerg under water it just looks like you are still on land so I wrote the follwing script (it dose not work :D):

#pragma strict

var WaterLevel:float;
private var IsUnderWater:boolean;
private var NormalColor:Color;
private var UnderWaterColor:Color;

function Start () 
{
   NormalColor = new Color(0.5f, 0.5f, 0.5f, 0.5f);
   UnderWaterColor = new Color(0.22f, 0.65f, 0.77f, 0.5f);
}

function Update () 
{
  if((transform.position.y < WaterLevel) != IsUnderWater)
  {
    IsUnderWater = transform.position.y < WaterLevel;
    if(IsUnderWater) SetUnderwater ();
    if(!IsUnderWater) SetNormal ();
    
  }
  
}

function SetNormal()
{
  RenderSettings.fogColor = NormalColor;
  RenderSettings.fogDensity = 0.002f;
}
function SetUnderwater()
{
  RenderSettings.fogColor = UnderWaterColor ;
  RenderSettings.fogDensity = 0.03f;
}

Can any one tell me why it is not working?
Thank you!
Immanu’EL

Duplicate of http://answers.unity3d.com/questions/587477/help-my-script-wont-work.html

1 Answer

1

Since you don’t explain what problem you are having, I can only guess at your issue. There is a logic error in your code from line 15 - 22 that doesn’t allow ‘IsUnderWater’ to be reset. Here is an alternate that I think does what you want to do (untested):

function Update () {
    bool IsUnder = (transform.position.y < WaterLevel);
    if (IsUnder && !IsUnderWater) {
        SetUnderwater ();
    } 
    else if (!IsUnder && IsUnderWater) {
        SetNormal()
    }
    IsUnderWater = IsUnder; 
}

It works by checking for the transition between under and over.