【问题标题】:Unity C# Rigidbody 2D Gravity Scale not working properlyUnity C# Rigidbody 2D Gravity Scale 无法正常工作
【发布时间】:2017-06-10 21:01:27
【问题描述】:

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

【问题讨论】:

    标签: gravity unity2d


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      相关资源
      最近更新 更多