0

如果玩家在两个位置之内,我已经设置了一个物体会下降的位置,然后它会再次上升。如果玩家不在该位置之间,则重力设置为零。它确实会下降和上升,但如果我走出这两个位置,物体会继续上升并且不会停止。我正在尝试在马里奥中重现如果玩家靠近时会掉落的巨石。(质量 = 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;
    }
4

1 回答 1

0

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

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

此外,在较新版本的 Unity 中不推荐使用rigidbody2D 属性。您可能想尝试以下方法:

Rigidbody2D body = GetComponet<Rigidbody2D>();
body.gravityScale = 0f;
body.velocity = Vector2.zero;
于 2017-06-11T21:54:40.687 回答