我正在尝试学习如何在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/