同时按下2个按钮时Unity 2D跳得更大

Unity 2D jump bigger when pressing 2 buttons simultaneously

我有这个代码让我的角色在接地时跳跃:

if (Input.GetKeyDown("w") || Input.GetKeyDown("up") || Input.GetKeyDown("space"))
     {
         GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);            
     }

我用下面的代码检查他是否接地(就像Unity 5中的平台游戏"Standard Assets Example Project")。

 Physics2D.OverlapCircleAll(m_GroundCheck.position, k_GroundedRadius, m_WhatIsGround);

问题是,如果我同时按下 3 个按钮(w、向上、space)中的一个以上,它会使跳跃高度比应有的高度高得多。 (这几乎就像给它加倍的力)那么我该如何解决这个问题呢?

我相信你可能发现了一个小问题。正如您通过文档知道的那样,getkeydown 被重置,除非您再次按下它,否则结果将是错误的,但是在跳转中,它只消耗第一个 getkeydown,当您获得下一次更新时,即使您添加了力,它可能还在地上,因此处理另一个 getkeydown。作为体验,请尝试以下操作:

bool jump = false;
if(Input.GetKeyDown("w"))
  jump = true;
if(Input.GetKeyDown("up"))
  jump = true;
if(Input.GetKeyDown("space"))
  jump = true;
if (jump)
 {
     GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);            
 }