Я создал простой 2D-проект в Unity и пытаюсь реализовать кинематическую физику. Я получаю отрицательную величину для движущегося вектора, и я хочу знать, почему.
![image](https://imgur.com/rmEKbNB.jpg)
Коллайдер прямо на краю стены, но я не понимаю, как именно он может влиять на приватную переменную
Метод перемещения, вызываемый в FixedUpdate
private void Move(Vector2 destination)
{
// destination: "(0.0, -0.1)"
float distance = destination.magnitude;
// destination: "(0.0, -0.1)" distance: -0.00999999978
if (distance > MinMoveDistance)
{
int count = rigidbody2D.Cast(destination, hitBuffer, distance + ShellRadius);
for (int i = 0; i < count; i++)
{
Vector2 currentNormal = hitBuffer[i].normal;
if (Mathf.Approximately(currentNormal.y, 1f))
{
IsGrounded = true;
}
float modifiedDistance = hitBuffer[i].distance - ShellRadius;
distance = modifiedDistance < distance ? modifiedDistance : distance;
}
}
rigidbody2D.position = rigidbody2D.position + destination.normalized * distance;
}