NullReferenceException help

i keep getting one of these it appears every frame i am trying to rotate my character using raycast to detect the angle of the ground and rotate the character like a skateboarder going up a half pipe. it seems to ba problem with the ray variable i think. here is my code:

var rotateSpeed = 90;
var pushingImpulse = 3.5;
var maxSpeed = 12;
var decayRate = 0.1;

var targetDir:Vector3;
var ray:Ray;
var hit:RaycastHit;


private var character : CharacterController;
private var trans : Transform;
private var speed = 0.0;

function Start ()
{
	character = GetComponent(CharacterController);
	trans = transform;
}

function Push()
{
	speed += pushingImpulse;
	speed = Mathf.Min(speed, maxSpeed);
}

function Update ()
{
	var horizontal = Input.GetAxis("Horizontal");
	trans.Rotate(0, rotateSpeed * horizontal * Time.deltaTime, 0);
	
	if (character.isGrounded && Input.GetKey(KeyCode.UpArrow))
		Push();
		
	var moveDirection = trans.forward * speed;
	moveDirection += Physics.gravity;
	character.Move(moveDirection * Time.deltaTime);
	

	
//Cast the ray relative to player
ray = Ray(trans.position + trans.up, trans.down);
 
//If we are on the ground and we get a raycasthit
if (Physics.Raycast(ray, hit, 100)) {
    if (character.isGrounded) {
        targetDir = hit.normal;
        Debug.DrawLine (transform.position, hit.point, Color.cyan);
        
    }
}
 
//Smoothly move towards the new direction
transform.up = Vector3.Slerp(transform.up, targetDir, 5 * Time.deltaTime);
	
	
  
    if (character.isGrounded)
    {
    	speed -= decayRate * Time.deltaTime * speed;
    }  
}

i cannot see the raycast with the debug on as well so definitely something wrong there.

also should i be using the character controller here or a rigidbody?

Many thanks

I dont see Transform having “down” variable in unity documentation.

You can use Vector3.down though.

Try this :

ray = Ray(trans.position + trans.up, trans.up * -1);

trans.down doesn’t exist, but trans.up * -1 can give you that.

Your use of the raycast seems wrong though.