【问题标题】:Smooth double jump Unity 2D platformer流畅的双跳 Unity 2D 平台游戏
【发布时间】:2016-11-06 10:31:28
【问题描述】:

我正在尝试为 Unity 2D 平台游戏制作一个流畅的二段跳机制,但现在如果您在初始跳之后立即跳,第二跳会更大,我希望在二段跳的情况下以相反的方式进行如果你像大多数 2D 平台游戏一样稍后按下它,就会让你更高,这是我的代码

       private void Update()
       {
            grounded = Physics2D.OverlapArea(transform.position, GroundedEnd.position, 1 << LayerMask.NameToLayer("Ground"));
            if (grounded || !doubleJumpUsed)
            {
                playerRigidBody.AddForce(new Vector2(0, JumpPower));
            }
            if (!grounded && !doubleJumpUsed)
            {
                doubleJumpUsed = true;
            }
            UpdateJumpingAnimator();
        }

        private void UpdateJumpingAnimator()
        {
           if (grounded)
           {
               doubleJumpUsed = false;
           }
        }

【问题讨论】:

    标签: c# unity3d 2d unity5


    【解决方案1】:

    试试这个代码:

    playerRigidBody.AddForce(new Vector2(0, JumpPower), ForceMode2D.Impulse);
    

    在这种情况下,需要减小变量 JumpPower 的值

    【讨论】:

    • 你使用任何输入控制器来控制英雄?
    • 不,我用自己的脚本来移动它。
    • playerRigidBody.AddForce(new Vector2(0, JumpPower), ForceMode2D.Impulse);在 FixedUpdate 中而不是在 Update 中使用它!!!
    • 完全一样,我看不出你想用 FixedUpdate 做什么。
    • FixedUpdate 用于物理操作,试试
    【解决方案2】:

    老实说,我不确定是否有一种漂亮的方法可以满足您的要求。但是您是否尝试过将 JumpPower 绑定到计时器中?换句话说,角色在空中的时间越长,经过的时间越长,按下按钮时对第二次跳跃施加的力就越大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多