Move to position problems

Hey guys I have i problem With the function MoveTowards (position : Vector3)
I have a space ship That does not have a character collider becous i did that and it only worked when i turned on the gravity. but that is not the way i want it becous the space ships are floting in space so to say The ship does have a rigidody but it does not move towards the target or move to a way point Can you fix this??
Thanks

 var attackRange = 300.0;
    var speed = 3.0;
    var rotationSpeed = 5.0;
    var shootRange = 15.0;
    var shootAngleDistance = 60.0;
    var shootAngle = 4.0;
    var dontComeCloserRange = 5.0;
    var pickNextWaypointDistance = 2.0;
    var delayShootTime = 0.35;
    var target : Transform;
    private var lastShot = -10.0;
    
    function Start () {
    	if (target == null && GameObject.FindWithTag("Enemy"))
    		target = GameObject.FindWithTag("Enemy").transform;
    		Patrol();
    }
    
    function Patrol () {
    	var curWayPoint = AutoWayPoint.FindClosest(transform.position);
    	while (true) {
    		var waypointPosition = curWayPoint.transform.position;
    		// Are we close to a waypoint? -> pick the next one!
    		if (Vector3.Distance(waypointPosition, transform.position) < pickNextWaypointDistance)
    			curWayPoint = PickNextWaypoint (curWayPoint);
    
    		// Attack the Enemy and wait until
    		// - Enemy is killed
    		// - Enemy is out of sight		
    		if (CanSeeTarget ())
    			yield StartCoroutine("AttackEnemy");
    		
    		// Move towards our target
    		MoveTowards(waypointPosition);
    		
    		yield;
    	}
    }
    
    function Update () {
    	if (target == null && GameObject.FindWithTag("Enemy"))
    		target = GameObject.FindWithTag("Enemy").transform;
    	if (target == null)
    		return;
    	
    	if (!CanSeeTarget ())
    		return;
    	
    	// Rotate towards target	
    	var targetPoint = target.position;
    	var targetRotation = Quaternion.LookRotation (targetPoint - transform.position, Vector3.up);
    	transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * 2.0);
    
    	// If we are almost rotated towards target - fire one clip of ammo
    	var forward = transform.TransformDirection(Vector3.forward);
    	var targetDir = target.position - transform.position;
    	if (Vector3.Angle(forward, targetDir) < shootAngleDistance)
    		SendMessage("Fire");
    }
    
    function CanSeeTarget () : boolean
    {
    	if (Vector3.Distance(transform.position, target.position) > attackRange)
    		return false;
    		
    	var hit : RaycastHit;
    	if (Physics.Linecast (transform.position, target.position, hit))
    		return hit.transform == target;
    
    	return false;
    }
    
    function Shoot () {
    	// Start shoot animation
    	animation.CrossFade("shoot", 0.3);
    
    	// Wait until half the animation has played
    	yield WaitForSeconds(delayShootTime);
    	
    	// Fire gun
    	BroadcastMessage("Fire");
    	
    	// Wait for the rest of the animation to finish
    	yield WaitForSeconds(animation["shoot"].length - delayShootTime);
    }
    
    function AttackEnemy () {
    	var lastVisibleEnemyPosition = target.position;
    	while (true) {
    		if (CanSeeTarget ()) {
    			// Target is dead - stop hunting
    			if (target == null)
    				return;
    
    			// Target is too far away - give up	
    			var distance = Vector3.Distance(transform.position, target.position);
    			if (distance > shootRange * 3)
    				return;
    			
    			lastVisibleEnemyPosition = target.position;
    			if (distance > dontComeCloserRange)
    				MoveTowards (lastVisibleEnemyPosition);
    			else
    				RotateTowards(lastVisibleEnemyPosition);
    
    			var forward = transform.TransformDirection(Vector3.forward);
    			var targetDirection = lastVisibleEnemyPosition - transform.position;
    			targetDirection.y = 0;
    
    			var angle = Vector3.Angle(targetDirection, forward);
    
    			// Start shooting if close and play is in sight
    			if (distance < shootRange && angle < shootAngle)
    				yield StartCoroutine("Shoot");
    		} else {
    			yield StartCoroutine("SearchEnemy", lastVisibleEnemyPosition);
    			// Enemy not visible anymore - stop attacking
    			if (!CanSeeTarget ())
    				return;
    		}
    
    		yield;
    	}
    }
    
    function SearchEnemy (position : Vector3) {
    	// Run towards the Enemy but after 3 seconds timeout and go back to Patroling
    	var timeout = 3.0;
    	while (timeout > 0.0) {
    		MoveTowards(position);
    
    		// We found the Enemy
    		if (CanSeeTarget ())
    			return;
    
    		timeout -= Time.deltaTime;
    		yield;
    	}
    }
    
    function RotateTowards (position : Vector3) {
    	SendMessage("SetSpeed", 0.0);
    	
    	var direction = position - transform.position;
    	direction.y = 0;
    	if (direction.magnitude < 0.1)
    		return;
    	
    	// Rotate towards the target
    	transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation(direction), rotationSpeed * Time.deltaTime);
    	transform.eulerAngles = Vector3(0, transform.eulerAngles.y, 0);
    }
    
    function MoveTowards (position : Vector3) {
    	var direction = position - transform.position;
    	direction.y = 0;
    	if (direction.magnitude < 0.5) {
    		SendMessage("SetSpeed", 0.0);
    		return;
    	}
    	
    	// Rotate towards the target
    	transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation(direction), rotationSpeed * Time.deltaTime);
    	transform.eulerAngles = Vector3(0, transform.eulerAngles.y, 0);
    
    	// Modify speed so we slow down when we are not facing the target
    	var forward = transform.TransformDirection(Vector3.forward);
    	var speedModifier = Vector3.Dot(forward, direction.normalized);
    	speedModifier = Mathf.Clamp01(speedModifier);
    
    	// Move the character
    	direction = forward * speed * speedModifier;
    	GetComponent (Rigidbody).SimpleMove(direction);
    	
    	SendMessage("SetSpeed", speed * speedModifier, SendMessageOptions.DontRequireReceiver);
    }
    
    function PickNextWaypoint (currentWaypoint : AutoWayPoint) {
    	// We want to find the waypoint where the character has to turn the least
    
    	// The direction in which we are walking
    	var forward = transform.TransformDirection(Vector3.forward);
    
    	// The closer two vectors, the larger the dot product will be.
    	var best = currentWaypoint;
    	var bestDot = -10.0;
    	for (var cur : AutoWayPoint in currentWaypoint.connected) {
    		var direction = Vector3.Normalize(cur.transform.position - transform.position);
    		var dot = Vector3.Dot(direction, forward);
    		if (dot > bestDot && cur != currentWaypoint) {
    			bestDot = dot;
    			best = cur;
    		}
    	}
    	
    	return best;
    }
    // Make sure there is always a character controller
    @script RequireComponent (Rigidbody)

Use

transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);

for MoveToward. You have to declare what object is moving to which other object and give it a speed.