Unity:玩家跳得很好,但下落非常慢

Unity: Player jumps fine, but falls extremly slow

我目前正在构建一个带有可以跳跃角色的小型 2D 平台游戏。这是跳跃的样子(FixedUpdate):

    if (jump)
    {

        if (isGrounded)
        {
            isGrounded = false;

            rb.AddForce(Vector2.up * (jumpHeight * counterForJumpHeight) * Time.deltaTime, ForceMode2D.Impulse);
            jump = false;

            anim.SetBool("bool_anim_isJumping", true);
        }

        if (timer != null)
            timer.Stop();

        counterForJumpHeight = jumpMulitMin;

        jumpAlreadCharging = false;

    }

看起来非常适合每次跳起然后落下。

然而:当玩家没有跳跃就直接掉落(就像从悬崖上掉下来或什么东西)时,看起来他有一片叶子的重量。极慢地航行到地面。一点都不加速。就像慢动作一样坠落。我当然可以提高重力,但这也会影响我跳跃后的下落,让他看起来像一块石头。好像下降速度加快了什么的。但这没有意义。他在跳跃后摔倒和他从什么东西上摔下来应该看起来一样,对吧?但事实并非如此。

这些是我对 RB 的价值观:

您可以增加玩家的刚体质量,或者增加 edit/projectsettings/ 物理中的重力

我不是 100% 确定,但这可能与碰撞检测有关。尝试将设置更改为连续动态而不是离散。

这可能是 animator 的问题,如果动画包含对 Rigidbody 的更改,如果您在动画中设置了设为默认值,它会产生奇怪的东西。

都是我的错,站在你的角度根本猜不出来。 玩家可以跳的所有东西都被标记为 "can_jump"。

void OnCollisionEnter2D(Collision2D col)
{
    if (col.gameObject.tag == "can_jump") // detect collision with ground game object 
    {
        isGrounded = true;
        deacceleratePerFrame = 1.5f;
        anim.SetBool("bool_anim_isJumping", false);
    }

}

这包括所有边。删除它意味着我不能再跳 atm,但这导致了问题。我肯定会找到另一种方法 :-) 谢谢大家