即使使用velocity -Unity-对象也不会移动

时间:2017-11-11 17:56:29

标签: c# unity3d

我遇到的问题是,当我应用速度时,我的物体不会移动。

Rigidbody2D Rigidb;
float MovingSpeed = 5f;

void Awake()
{
    Rigidb = GetComponent<Rigidbody2D>();
}

void MoveObject(Vector3 destination)
{
    Vector3 dirVector = destination - transform.position;

    bool x = false, y = false;

    if (dirVector.x < 0)
    {
        x = true;
        dirVector.x = -dirVector.x;
     }
     if (dirVector.y < 0)
     {
         y = true;
         dirVector.y = -dirVector.y;
     }

     if (dirVector.x > dirVector.y)
     {
         dirVector = dirVector / dirVector.x;
     }
     else
     {
         dirVector = dirVector / dirVector.y;
     }

     if ((x && dirVector.x > 0) || (!x && dirVector.x < 0)) dirVector.x = -dirVector.x;
     if ((y && dirVector.y > 0) || (!y && dirVector.y < 0)) dirVector.y = -dirVector.y;    
     Rigidb.velocity = new Vector2(dirVector.x * MovingSpeed, dirVector.y * MovingSpeed);
}

在我的测试用例中,速度最终为(0.0,5.0),但即使它不会移动。它不是运动学的,x和y运动也不会被冻结。

1 个答案:

答案 0 :(得分:1)

确保你的刚体isKinematic为false,并且位置约束不会冻结到x,y,z轴