[英]How to fix negative magnitude in 2D Unity project
我已经在Unity中构建了一个简单的2D项目,并尝试实现运动物理。 我的运动矢量越来越小,我想知道为什么。
对撞机就在墙的边缘,但是我不知道它会如何影响私有变量
在FixedUpdate中调用的Move方法
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;
}
float distance = destination.magnitude;
应该总是返回一个正数,不确定您如何获得注释中提供的值。
无论如何,如果要确保distance
始终为正,则只需使用float distance = Mathf.Abs(destination.magnitude);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.