如何解决双跳

ada*_*udu 3 unity-game-engine

我遵循了“Roll-A-Ball”的 Unity 教程,并添加了一些扩展。球现在可以跳跃了,但是每次跳跃的次数太多了;当我按下 SPACE 时,我一次只想要一次球。现在我可以按 SPACE 3 次,它会跳得越来越高。

  if (Input.GetKeyDown(KeyCode.Space))
        {
            Vector3 jump = new Vector3(0.0f, 150.0f, 0.0f);

            rb.AddForce(jump);
        } 
Run Code Online (Sandbox Code Playgroud)

编辑:

曾尝试稍微更改代码,但现在我只能跳一次(第一次)

private void textBox_KeyDown(object sender, KeyEventArgs e)
{
      if (Input.GetKeyDown(KeyCode.Space) && jump.y <= 0.0f)
    {
        jump.Set(0.0f, 150f, 0.0f);
        rb.AddForce(jump);

     }
    }
Run Code Online (Sandbox Code Playgroud)

Gus*_*046 5

这可能有点难以遵循(因为它不是一个循序渐进的教程,而是一个计划)。

您必须检查球何时到达地板,检查第一次按下后速度是否达到 0 或更高。一旦完成,然后将一些 bool(此处命名为CanJump)设置为true(或您的语言定义为 true 的任何内容)。

还有一些检查要做;一旦 CanJump 设置为 true(因为您的速度现在为>= 0),还将一个 int 变量设置NumJumps为 0。并在每次跳跃时增加它。这样你可以CanJump在两次跳跃后设置为 false,从而防止球跳跃。

请注意,我对 Unity 3D 一无所知,但我对 3D 游戏(例如 Unreal Engine 1 和 UT99 模组)有很多经验。