我已经在Unity中构建了一个简单的2D项目,并试图实现运动物理。移动矢量的幅度为负,我想知道为什么。
对撞机就在墙的边缘,但我不知道它会如何精确影响私有变量
在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;
}
答案 0 :(得分:0)
float distance = destination.magnitude;
应该始终返回一个正数,不确定您如何获得注释中提供的值。
无论如何,如果要确保distance
始终为正,则只需使用
float distance = Mathf.Abs(destination.magnitude);