我有这个代码让我的角色在接地时跳跃:
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,向上,空格)中的多个按钮,它会使跳跃高得多。 (这几乎就像给它双倍的力量)所以我怎么能解决这个问题呢?
答案 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);
}