Gravity Underwater

Here is my code at the moment and it changes render settings dependant on height and changes gravity and fallspeed (So it seems like you’ve hit water) from the “CharacterMotor” script. What would be a good way to have some slight buoyancy (So you can swim in the water)

Can I disable a the charactercontroller rigidbody? Add an constantforce component?

#pragma strict

var waterLevel : float;
private var isUnderwater : boolean;
private var normalColor : Color;
private var underwaterColor : Color;

//private var myParticles : ParticleSystem;
private var chMotor : CharacterMotor;
//var player : GameObject;

function Start () 
	{
		normalColor = new Color (0.5f, 0.5f, 0.5f, 0.5f);
        underwaterColor = new Color (0.22f, 0.65f, 0.77f, 0.5f);
		chMotor = GetComponent(CharacterMotor);
        //myParticles = GetComponent(ParticleSystem);
        //myParticles.Stop();
	}

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.5f;
        }
     
function SetUnderwater () 
		{
            RenderSettings.fogColor = underwaterColor;
            RenderSettings.fogDensity = 0.03f;
            chMotor.movement.gravity = 0;
            chMotor.movement.maxFallSpeed = 5;
            //player.GetComponent(CharacterController).attachedRigidbody.useGravity = false;
            //player.GetComponent(CharacterController).enabled = false; 
            //myParticles.Play();
        }

You could use a character controller and modify the gravity while in water:

void Update(){
    moveDirection = _transform.forward;
    moveDirection *= speed;
    moveDirection.y -= gravity;
    _controller.Move(moveDirection * Time.deltaTime);
}

void OnTriggerEnter(Collider col){
   if(col.collider.tag == "Water"){
       gravity /=2; 
   }
}
void OnTriggerExit(Collider col){
   if(col.collider.tag == "Water"){
       gravity *=2; 
   }
}