Slowing player speed when in air

Hello all;

I am currently moving my player (a Ball) with Force, however when in the air I realise that the Ball is no longer being slowed down by the friction below it, which means the speed of the ball is greatly increased while jumping, I would actually like the player to move slower while in the air.

I have tried many IF statements, but this one has stumped me.

Code:

function Update(){ 
	var hit : RaycastHit; 
		if (Physics.Raycast (transform.position, Vector3.down, hit, 2.5)) { 
		  	if (isFalling==false && Input.GetButtonDown("Jump")){  
        	rigidbody.velocity.y += jumpSpeed; 
	    } 
	} 
	 
} 
 
 
function FixedUpdate(){ 
	if(Input.GetKey ("right")) { 
			rigidbody.AddForce (cameraRelativeRight * Speed * Time.deltaTime); 
	} 
	if(Input.GetKey ("left")) {
		rigidbody.AddForce (cameraRelativeLeft * Speed * Time.deltaTime);
		}
} 
function Jump (){ 
		if (Input.GetButtonDown("Jump") && isFalling==false){ // only jump from the ground 
        jumped = true; 
        var hitt : RaycastHit; 
        rigidbody.AddForce.y (jumpSpeed * Time.deltaTime); 
        } 
	}

Any ideas would be greatly appreciated, thank you.

Very simple. Just divide your speed variable by any factor that you like (2, 3 or 4) whenever the ball is not colliding with anything.

OnCollisionEnter > colliding = true;
OnCollisionExit > colliding = false;

FixedUpdate > if (!colliding) speed = speed/any_number

edit:

how do you set “isFalling”? You should change that with “isColliding”. If your sphere is colliding with something (most likely, the ground: but may be everything) it can jump and increase speed.

I would also recommend to limit the speed: rigidbody.velocity may get out of hands really quickly. If the user keep pressing “right” or “left” your sphere will be really fast and it will conserve all of the energy even while traveling in the air.