同时按下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);
}
我有这个代码让我的角色在接地时跳跃:
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);
}