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

时间:2015-04-10 13:59:02

标签: c# unity3d

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

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

我检查他是否接受以下代码(就像Unity的5“标准资产示例项目”中的平台游戏一样)。

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

问题在于,如果我同时按下3个按钮(w,向上,空格)中的多个按钮,它会使跳跃高得多。 (这几乎就像给它双倍的力量)所以我怎么能解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

我相信你可能发现了一点小故障。正如您在文档中所知,getkeydown被重置,除非您再次按下它,否则结果将为false,但是在跳转中,它只会消耗第一个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);            
 }