[英]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.