Я предполагаю, что acceptable_distance
соответствует размеру вектора a в изображении. Итак, acceptable_distance
- это расстояние между C и D
.
Расчет нормализованного вектора неверен. normalized
- обратная длина вектора от B до C :
normalized = 1 / sqrt(player_to_col_vector[0] ** 2 + player_to_col_vector[1] ** 2)
Далее lenBC
- это расстояние между B и C . dirBC
представляет собой Единичный вектор (это означает, что его длина равна 1) и является формой направления B до C :
lenBC = sqrt(player_to_col_vector[0] ** 2 + player_to_col_vector[1] ** 2)
dirBC = (player_to_col_vector[0] / lenBC, player_to_col_vector[1] / lenBC)
(dx, dy)
- вектор от C до D .
dx, dy = (dirBC[0] * acceptable_distance, dirBC[1] * acceptable_distance)
Вектор b , равный точке D , представляет собой сумму вектора v и вектора a :
bx, by = (col_distance[0] + dx, col_distance[1] + dy)
Вектор от точки B
до D
представляет собой сумму w
и a
:
BDx, BDy = (player_to_col_vector[0] + dx, player_to_col_vector[1] + dy)
Удалено, поскольку тег "pygame" был удален.
Приведенный выше код выполняет все расчеты. Но обратите внимание, в PyGame есть гораздо более простой способ сделать это, используя pygame.math.Vector2
для вычислений:
u = pygame.math.Vector2(enemy_distance)
v = pygame.math.Vector2(col_distance)
w = v - u
a = w.normalize() * acceptable_distance
b = v + a