【问题标题】:Unity - Make Character Be Able To Jump When Slide Off the PlatformUnity - 让角色在滑下平台时能够跳跃
【发布时间】:2018-10-22 18:30:44
【问题描述】:

我正在根据this 视频中显示的代码在 Unity 中制作 2D 无尽平台跑步游戏,但我无法弄清楚如何让角色在滑出平台时能够跳跃。

在代码中,跳跃是通过检查玩家按下空格时是否在他下方有一个平台来控制的。所以当角色滑下平台时,他下面什么都没有,不能跳。

我想出了如何使角色双跳,但无法解决跌倒问题。我尝试的一切都让角色不停地跳跃。

我不知道如何让角色在平台滑下后能够跳跃(所以角色在跌倒之前还没有跳跃)。

好的,代码如下:

public void OnJumpInputDown() {
    if (controller.collisions.below) {
            velocity.y = maxJumpVelocity;
            doubleJump = true;
        }
    } else if (doubleJump)
    {
        doubleJump = false;
        velocity.y = maxJumpVelocity;
    }
}

【问题讨论】:

标签: unity3d


【解决方案1】:

由于您没有发布任何特定的代码,我只会给您一个一般性的答案。你需要做的是创造另一个条件,当玩家在他下面没有任何东西时,你需要确定他是否从平台上滑落。一个可能的例子是创建一个布尔值,它在他滑动时立即变为真,因此如果他下方没有任何东西但该布尔值为真,那么他仍然可以跳跃,否则他下方没有任何东西并且他不能跳跃。

【讨论】:

  • 我的代码与我链接的视频末尾显示的代码相同。玩家也是静止的,我的意思不是像运动一样滑动,而是当他离开平台而没有跳跃时。然后他就不能跳了。我试图用 bool 解决它,但他可以无休止地跳跃。
  • 这意味着一旦他停止滑动,你就忘记将 bool 转回 false,尝试使用 bool 做同样的事情,但当玩家回到原始状态时小心将其设置回 false,因为好像你只是将它设置为 true。
  • 它不会真正起作用,因为它是通过检查按下空格时玩家是否站在某物上来控制的。当他不在时,他就不能跳(除了二段跳)。因此,没有办法控制他在跳跃时跌落的跌落条件,当他在平台上滑动时跌倒同样如此。但是我今天已经想通了,我把它贴在下面。 :)
【解决方案2】:

所以我今天想通了,我添加了一个变量来记住玩家可以跳跃多少次,当他触地时,如果玩家还没有跳跃,它会重置。 :) 这是代码:

int hasJumps;
bool jumping;

public void OnJumpInputDown() {
    jumping = true;
    if (controller.collisions.below) {
         velocity.y = maxJumpVelocity;
         hasJumps = hasJumps - 1;
    } else if (hasJumps != 0) {
        velocity.y = maxJumpVelocity;
        hasJumps = hasJumps - 1;
    }
}

public void OnJumpInputUp() {
    jumping = false;
}


void IsFalling()
{
    if ((controller.collisions.below) && (!jumping))
    {
        hasJumps = 2;
    }
}

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多