我正在尝试学习如何在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键时,英雄应该自动跳跃和下落。

最佳答案

简而言之检查跳转

checkJump正在执行将要执行的操作。它会检查您是否在跳跃。无论是否跳跃,它都不会改变,因为您没有条件检查。如果您希望这种情况发生,则必须执行以下操作。

让那个家伙跳

 JoePlayer.AddForce(Vector3.up * jumpSpeed);


将您的速度代码更改为这样。
确实不需要您的checkJump布尔值。如果要保留它,请随时将其重新添加。

关于c# - 为什么我的游戏英雄飞起来而不是在Unity中跳跃?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50770404/

10-11 11:47