Рональд Макдональд Все верно расписал, ну а раз это тема по юнити, то куда же без готового кода xD
private GameObject player;
private float oldSqrMagnitude;
private Camera camera => Camera.main;
private void Update()
{
var newSqrMagnitude = (player.transform.position - camera.ScreenToWorldPoint(Input.mousePosition)).sqrMagnitude;
if (newSqrMagnitude > oldSqrMagnitude)
{
Debug.Log("дальше");
}
else if (newSqrMagnitude < oldSqrMagnitude)
{
Debug.Log("ближе");
}
else
{
Debug.Log("стоит");
}
oldSqrMagnitude = newSqrMagnitude;
}
Однако учтите что тут будет реагировать даже если персонаж стоит на месте, а двигается только мышь.
Добавить проверки чтобы учитывалось только при движение персонажа думаю не сложно)
Если для ваших целей этот код будет не так точен, то заменить .sqrMagnitude на .magnitude
Так же я бы рекомендовал это считать реже чем каждый кадр) Для этого можно использовать FIxedUpdate, либо корутину. В идеале бы это считать только при изменение положения мыши\персонажа ;)