试图让我的2D角色双跳 - 它不起作用,我不知道为什么?

时间:2017-06-08 16:06:02

标签: c# unity3d 2d

我正在制作2D平台游戏。到目前为止,这是我的代码。角色只有在接触到地面时才会跳跃 - 但双跳的代码不起作用。任何帮助表示赞赏。我是脚本新手,我不明白我做错了什么?

function clean(str) {
  // remove double spaces
  while (str.indexOf("  ") > -1) { 
    str = str.replace("  ", " ");
  }

  // remove spaces in the beginning and end (it is called "trim")
  return str.trim(); 
}

console.log(clean(" This is    the    text  with double   spaces!  "));

2 个答案:

答案 0 :(得分:1)

尝试使用DoubleJump方法的代码替换Jump方法代码,并在应用跳转之前删除对IsGrounded的检查。否则你的角色每次都必须在地上。然后删除不再需要的DoubleJump方法。如果你在游戏后期使用DoubleJump作为附加技能,那么只需增加maxJumps,因为你的玩家可以获得技能。最初将它设置为1,这样它们每次都必须到达地面。

        private void Jump() {
        if (isGrounded) {
            jumpsLeft = maxJumps;
        }
        if (Input.GetButtonDown("Jump") && jumpsLeft > 0) {
            playerBody.velocity = new Vector2(playerBody.velocity.x, jumpHeight);
            jumpsLeft--;
        }
    }

答案 1 :(得分:1)

您的代码没有多大意义。你应该用一种方法处理你的跳跃并处理它:

private void HandleJump()
{
    if(isGrounded) {
        jumpsLeft = maxJumps;
    }

    if(Input.GetButtonDown("Jump") && jumpsLeft > 0) {
        playerBody.velocity = new Vector2(playerBody.velocity.x, jumpHeight);
        jumpsLeft--;
    }
}

通过这种方式,你可以进行三次跳跃或者你想要的多次跳跃。