【问题标题】:Unity: Player jumps fine, but falls extremly slowUnity:玩家跳得很好,但下落非常慢
【发布时间】:2019-02-06 11:00:15
【问题描述】:

我目前正在构建一个带有可以跳跃角色的小型 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 的价值观:

【问题讨论】:

    标签: unity3d gravity


    【解决方案1】:

    你可以增加玩家的刚体质量,或者在编辑/项目设置/物理中增加重力

    【讨论】:

    • 对坠落问题没有任何影响
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        都是我的错,从你的角度无法猜测。 玩家可以跳跃的所有东西都标有“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 了,但这导致了问题。我肯定会找到另一种方法 :-) 谢谢大家

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-10-21
          • 1970-01-01
          • 2014-03-18
          • 1970-01-01
          • 2011-09-17
          • 1970-01-01
          • 2016-12-21
          相关资源
          最近更新 更多