float percentX = (worldPosition.x + gridWorldSize.x/2) / gridWorldSize.x;
Сначала мы рассчитываем процент от 0% до 100%, чтобы определить, насколько далеко вы находитесь справа в вашей сетке A *. Я предполагаю, что когда worldPosition
равно (0, 0, 0)
, это означает, что вы находитесь в центре вашей сетки поиска путей. Так что percentX
должно быть 0,5 (50%).
Для позиции (0, 0, 0) приведенная выше строка кода приводит к
(0 + gridWorldSize.x/2) / gridWorldSize.x
, что равно 0,5.
При перемещении влево worldPosition.x
становится более отрицательным, поэтому percentX
будет уменьшаться в соответствии с приведенной выше формулой.
При перемещении вправо worldPosition.x
становится более положительным, поэтому percentX
будет увеличиваться на основе приведенной выше формулы.
percentX = Mathf.Clamp01(percentX);
Зафиксируйте процент в диапазоне от 0% до 100%
int x = Mathf.RoundToInt((gridSizeX-1) * percentX);
Определите узел A * в зависимости от того, где вы находитесь в сетке. Например, если ваша сетка имеет 10 узлов, и вы находитесь на 30% по всей сетке (percentX
== 0,3), то вы находитесь в узле 3.