Move character to mouse position, keeping constant speed

I’m writing a character control script for a top-down RPG, and want my character to move towards the mouse position whenever I click or hold the mouse button down:

using UnityEngine;
using System.Collections;

public class Movement : MonoBehaviour {
	
	//Player movement speed
	public float movementSpeed = 10.0f;
	
	//Player height
	public float height = 0.5f;
	
	//Target position
	Vector3 targetPosition; 
	
	void Start()
	{
		//Setting target position to current position upon game start
		targetPosition = transform.position;
	}
		
	// Update is called once per frame
	void Update ()
	{
		//When user presses left mouse button
		if(Input.GetMouseButton(0))
		{
			//Update target position
			targetPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
		}
		
		//Movement code attempt 1 (obviously I don't use both at the same time, I've merely tried both:
		transform.position = transform.position + (targetPosition - transform.position).normalized * movementSpeed * Time.deltaTime;
		
		//Movement code attempt 2:
		transform.position = Vector3.Lerp(transform.position, targetPosition, (Time.deltaTime*movementSpeed));
	}
}

It works just fine, aside from that my character moves slower when traveling shorter distances, and faster when traveling longer distances. I can understand why this happens, as the movement time is constant no matter how far you travel, but I’m not sure how to fix that - I want the movement speed to be the same no matter what. I’ve tried both approaches above and in both cases this happens.

I took a look at some other similar questions in here, but found nothing that worked in this case. Any ideas?

Hmm, I have this idea:

Make a transform called “emptyTarget”, assign an empty object to it. On update use this code:

//makes the empty object constantly on the target
emptyTarget.transform.position = targetPosition; 

//makes the character constantly face the target
transform.LookAt(emptyTarget);

//makes the character move a little bit every frame
//as he's always facing the target, it will always go in
//direction to it
transform.Translate(transform.forward * movementSpeed * Time.deltaTime);

Note: this code was not tested.