为什么我的游戏英雄会飞而不是在Unity中跳跃?

时间:2018-06-09 02:30:24

标签: c# unity3d

我正在尝试学习如何在Unity中开发2D游戏。我想让英雄跳跃和摔倒。但是,我的游戏英雄是飞行而不是跳跃。当我按下相关键时,它会跳跃而不会掉落。

我可能犯了一个逻辑错误。我定义了一个名为checkJump的布尔值,但我不确定它是否有效。按下键盘上的相关X键后,我看到Check Jump选项已启用。但是,它永远不会再次禁用。因此,游戏英雄永远不会倒下。

以下是相关变量:

[SerializeField]
private bool checkJump;
[SerializeField]
private float jumpForce;

以下是Jump()中调用的Update()函数:

private void Jump () {
        if (Input.GetKeyDown (KeyCode.X)) 
        {
            checkJump = true;
            JoePlayer.velocity = new Vector2 (JoePlayer.velocity.x, jumpForce);
        }
           checkJump = false; //If I apply this, then the boolean never turns back to the enabled status.
    }

如果我将checkJump = false布尔值写入if块之外,则布尔值永远不会启用,但游戏角色会继续飞行。所以if块中的布尔值永远不会起作用。

Click here for the display result

如何让游戏英雄跳跃和摔倒?当玩家按下X键时,英雄应自动跳跃和下降。

1 个答案:

答案 0 :(得分:1)

检查跳转,简而言之

checkJump正在按照它所说的去做。它会检查你是否在跳跃。如果你跳或不跳,它不会改变,因为你没有条件检查。如果你想要这样做,你必须做这样的事情。

让这家伙跳

 JoePlayer.AddForce(Vector3.up * jumpSpeed);

将您的速度代码更改为此类似的内容。 确实没有必要使用checkJump布尔值。如果你想保留它,可以随意添加它。