Предполагая, что A - это вектор положения, B - это вектор положения, а maxLength - это максимальная длина, которую вы допускаете.
A
и B
равны Vector2
(как вы отметили этот вопрос xna ).
// Create a vector that describes going from A to B
var AtoB = (B - A);
// Make a vector going from A to B, but only one unit in length
var AtoBUnitLength = Vector2.Normalize(AtoB);
// Make a vector in the direction of B from A, of length maxLength
var AtoB1 = AtoBUnitLength * maxLength;
// B1 is the starting point (A) + the direction vector of the
// correct length we just created.
var B1 = A + AtoB1;
// One liner:
var B1 = A + Vector2.Normalize(B - A) * maxLength;