Need help with rotation for click and move script!

The code I have so far lets you click anywhere on a plane and the character will then move and rotate in that direction. What I need help doing is getting it to walk in the direction its facing while rotating until its facing the destination. I think it has to do with rotating at the starting position but I’m not too sure. Below is what I have so far:

using UnityEngine;
using System.Collections;

public class ClickToMove2 : MonoBehaviour {
	
	private Transform myTransform;	//this transform
	private Vector3 destinationPosition;   //destination position
	private float destinationDistance;     //distance to destination
	
	public float moveSpeed;		//controls character move speed
	public float rotateSpeed;   //speed at which character will rotate
	public float tol = 0f;
	
	private Quaternion targetRotation;
	
	// Use this for initialization
	void Start () {
		
		myTransform = transform;		//set myTransform to this GameObject.Transform
		destinationPosition = myTransform.position;		//prevents reset of myTransform
	
	}
	
	// Update is called once per frame
	void Update () {
	
		destinationDistance = Vector3.Distance(destinationPosition, myTransform.position);  		//keep track of GameObject and destinationPosition (distance between)
		
		if(destinationDistance < 1f)		//prevents shaking behavior
			moveSpeed = 0;
		
		
		else if(destinationDistance > 1f)
			moveSpeed = 5.0f;
		
		
		//will move player if left mouse button was clicked
		if (Input.GetMouseButtonDown(0)&& GUIUtility.hotControl ==0) {
			
			Plane playerPlane = new Plane(Vector3.up, myTransform.position);
			
			Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			
			float hitdist = 0.0f;
			
			 if (playerPlane.Raycast(ray, out hitdist)) {
				
				Vector3 targetPoint = ray.GetPoint(hitdist);
				
				destinationPosition = ray.GetPoint(hitdist);
				
				targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
				
				
				
			}//end nested if
			
			Debug.Log ("CLICKED!");
			
		}//end if
		
		//below will prevent code from running if not needed
		
		myTransform.rotation = Quaternion.RotateTowards(myTransform.rotation, targetRotation, rotateSpeed * Time.deltaTime);
		
		
		if(destinationDistance > tol){
			
			
			myTransform.position = Vector3.Lerp(myTransform.position, destinationPosition, 0.2f * Time.deltaTime);  //lerp for slowing down movement  0.8f
			
		}//end if
		
	}//end update
	
}//end ClickToMove2

The easiest solution is to move the object in its forward direction, and calculate the rotation every Update. Translate is a better solution than Lerp in this case, since it by default expects that the direction is in local space (Vector3.forward does the job). There are some other points to take into account: zero the Y component of the target direction in order to make it strictly horizontal - this avoids character tilting; don’t rotate or move the character when too close to the target position (the variable stopDistance sets this min distance).

using UnityEngine;
using System.Collections;
 
public class ClickToMove2 : MonoBehaviour {
 
    private Transform myTransform; //this transform
    private Vector3 destinationPosition;   //destination position
    private float destinationDistance;     //distance to destination
 
    public float moveSpeed = 5.0f;    // controls character move speed
    public float rotateSpeed = 90f;   // speed at which character will rotate
    public float stopDistance = 0.1f; // stop moving when closer to stopDistance
 
    private Quaternion targetRotation;
 
    // Use this for initialization
    void Start () {
       myTransform = transform;   // cache transform to improve performance
       destinationPosition = myTransform.position; // initialize destinationPosition
    }
 

    void Update () {
       // will move player to clicked point
       if (Input.GetMouseButtonDown(0)&& GUIUtility.hotControl == 0) {
           // if some point clicked...
           Plane playerPlane = new Plane(Vector3.up, myTransform.position);
           Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
           float hitdist = 0.0f;
           if (playerPlane.Raycast(ray, out hitdist)) {
               // set destination to the point clicked
               destinationPosition = ray.GetPoint(hitdist);
           }//end nested if
           Debug.Log ("CLICKED!");
       }//end if
       // calculate the current target direction
       Vector3 destDir = destinationPosition - myTransform.position;
       destDir.y = 0; // make it strictly horizontal to avoid object tilting
       destinationDistance = destDir.magnitude; // get the horizontal distance
       // object doesn't anything if below stopDistance:
       if (destinationDistance >= stopDistance){ // if farther than stopDistance...
           targetRotation = Quaternion.LookRotation(destDir); // update target rotation...
           // turn gradually to target direction each frame:
           myTransform.rotation = Quaternion.RotateTowards(myTransform.rotation, targetRotation, rotateSpeed * Time.deltaTime);
           // move in its local forward direction (Translate default):
           myTransform.Translate(Vector3.forward * 0.2f * Time.deltaTime);  // move in forward direction 
       }//end if
    }//end update
}//end ClickToMove2