Твой код неполный: неясно какой диапазон значений возвращает GameManager.Instance.GetAxisMove().
Если он возвращает для axis.x строго 0f или 6f и для axis.y строго 0f или 6f, то после moveDirection = new Vector3(axis.x, 0, axis.y); добавляешь строку:
Код
moveDirection = moveDirection.normalized * 6.0f;
Тогда вектор направления всегда будет либо нулевой, либо с длиной 6.0f. Вместо 6.0f надо написать скорость, которая тебе нужна, но так как в коде, опять же, непонятно где используется walkSpeed и runSpeed, корректные исправления, учитывающие бег, предоставить не могу.
Если у тебя будут использоваться промежуточные значения для скорости (типа ускорения), то нужно проверять, что оба значения axis.x и axis.y не равны нулю (значит движение по двум координатам) и в этом случае умножать вектор движения на отношение длины желаемой скорости (6f) к длине new Vector3(6f, 0, 6f) (~ 8.49).
Кстати, ты не написал, получилось ли у тебя в этой теме http://gcup.ru/forum/59-79866-1.