我正在尝试学习如何在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
键时,英雄应自动跳跃和下降。
答案 0 :(得分:1)
检查跳转,简而言之
checkJump
正在按照它所说的去做。它会检查你是否在跳跃。如果你跳或不跳,它不会改变,因为你没有条件检查。如果你想要这样做,你必须做这样的事情。
让这家伙跳
JoePlayer.AddForce(Vector3.up * jumpSpeed);
将您的速度代码更改为此类似的内容。
确实没有必要使用checkJump
布尔值。如果你想保留它,可以随意添加它。