Таким образом, проблема в том, что ваши position
и check_point[i]
являются обеими позициями .. вы на самом деле здесь не берете указания.
Как отмечалось в комментариях, например, позиция 0,0,0
не будет работать вообще, так как этот вектор не имеет направления, поэтому любой угол между этой и другой позицией должен быть неопределенным.
То, что вы хотите сделать, это взять направления, такие как Vector2.right
и check_points[i] - position
.
Следующая проблема заключалась в том, что Vector2.Angle
всегда положителен, поэтому вы хотите использовать SignedAngle
здесь!
float angle = Vector2.SignedAngle(Vector2.right, check_points[i] - position) * Mathf.Deg2Rad;
float dist = Vector2.Distance(position, check_points[i]);
Затем отметим, что вектор позиции имеет еще один компонент, а не только угол и расстояние ( который один только направление): A StartPoint . Вы хотите использовать этот вектор и начать с вашей позиции (которая теперь также может быть 0,0,0
), например
Vector2 other = position + new Vector2(Mathf.Cos(angle) * dist, Mathf.Sin(angle) * dist);
Debug.DrawLine(position, check_points[i], Color.white);
Debug.DrawLine(position, other, Color.red);
Как вы можете видеть, белые линии точно покрыты красными, поэтому вы см. только красные линии, пересчитанные с угла и расстояния
![enter image description here](https://i.stack.imgur.com/SW0Sk.gif)