团结:运动员跳得很好,但跌倒速度极慢

时间:2019-02-06 11:00:15

标签: unity3d gravity

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

enter image description here

4 个答案:

答案 0 :(得分:1)

您可以增加播放器的刚体质量,也可以在编辑/项目设置/物理中增加重力

答案 1 :(得分:1)

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

答案 2 :(得分:1)

animator可能是一个问题,如果动画包含对Rigidbody的更改,那么如果您在动画中设置了“设为默认值”,它就会产生怪异的东西。

答案 3 :(得分:0)

这都是我的错,无法从您的角度进行猜测。 玩家可以跳跃的所有物品都标记有“ 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,但这引起了问题。我肯定会找到另一种方法:-)谢谢大家