【问题标题】:Need help fixing this jump buffer (Problem: Player occasionally double jumps)需要帮助修复这个跳跃缓冲区(问题:玩家偶尔会双跳)
【发布时间】:2021-01-22 15:18:19
【问题描述】:

我尝试制作一个简单的跳转缓冲区和 Coyote 计时器。 如您所见,有时玩家会进行二段跳,但前提是跳转按钮的点击速度非常快。

正如你所看到的here>,它只发生了几次。

[Header("Player Accesiblility")]
 public float hangTime = 1.5f;
 [SerializeField]
 private float hangCounter;
 [SerializeField]
 private float jumpTimer;
 public float jumpDelay = 0.25f;

private void FixedUpdate()
 {
     if (jumpTimer > Time.time && coll.onGround)
     {
         Jump(Vector2.up, false);
     }
 }
Void update(){

 if (coll.onGround) //Coyote Time for Jump
     {
         hangCounter = hangTime;
     }

     if (Input.GetButtonDown("Jump")) //Jump Function
      {
         anim.SetTrigger("jump");

         jumpTimer = Time.time + jumpDelay;
         if (!coll.onGround && hangCounter > 0)
         {
             Jump(Vector2.up, false);
             hangCounter = 0;
         }


         if (coll.onWall && !coll.onGround)
          {

             WallJump();
          }
      }
}
 private void Jump(Vector2 dir, bool wall)
  {
     rb.velocity = new Vector2(rb.velocity.x, 0);
      rb.velocity += dir * jumpForce;
     jumpTimer = 0f;
     hangCounter = 0;
  }

我们将不胜感激,感谢您的宝贵时间。

【问题讨论】:

  • 这很可能是因为你在Update 而不是FixedUpdate 中做物理。阅读this to know more
  • @Mateusz 谢谢我会试试看
  • 当您接受答案时,我们知道问题已成功处理。如有必要,没有什么能阻止您自己回答(或者您可以鼓励 Mateusz 扩展他们的评论)。我们不编辑标题。

标签: c# unity3d rigid-bodies


【解决方案1】:

我从@Mateusz 那里得到了帮助我的答案。 他的评论: 这很可能是因为您在 Update 中而不是在 FixedUpdate 中进行物理。阅读本文以了解更多信息 (https://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多