Unity C#Rigidbody 2D Gravity Scale无法正常工作

时间:2017-06-10 21:01:28

标签: gravity unity2d

如果玩家在两个位置之内,我将它设置在一个物体落下的位置,它会再次上升。如果玩家不在重力设置为零的位置之间。它确实下降并上升,但如果我走出两个位置,物体继续上升而不会停止。如果玩家在附近,我正试图在马里奥重建岩石巨石。 (质量= 1,线性拖动= 0,固定角度=已检查,运动=未检查,插值=无,睡眠模式=开始唤醒,碰撞检测=连续)

     //the positions where gravity is set to zero
     if (rockk.transform.position.y > 4.0 && player.transform.position.x < 59)
    {
        rockk.rigidbody2D.gravityScale = 0f;
        a = 0;
    }

    if (rockk.transform.position.y > 4.0 && player.transform.position.x > 64)
    {
        rockk.rigidbody2D.gravityScale = 0f;
        a = 0;
    }


    //go up ,  -1.2 is the ground
    if (rockk.transform.position.y < -1.2 )  
    {
        rockk.rigidbody2D.gravityScale  = -1f;
    }   

        //go down
    if ( rockk.transform.position.y > 4.0 && player.transform.position.x >59 && player.transform.position.x < 64)
    {
        rockk.rigidbody2D.gravityScale = 1f;
        a = 1;
    }

1 个答案:

答案 0 :(得分:0)

当您将重力比例重置为0时,您的Rigidbody仍具有速度。没有阻力,它永远不会停止。尝试类似:

rockk.rigidbody2D.gravityScale = 0f;    
rockk.rigidbody2D.velocity = Vector2.zero;

此外,在较新版本的Unity中不推荐使用rigidbody2D属性。你可能想尝试类似的东西:

Rigidbody2D body = GetComponet<Rigidbody2D>();
body.gravityScale = 0f;
body.velocity = Vector2.zero;