如何使播放器在Java中只能跳到一定高度?

时间:2019-05-26 01:14:14

标签: java

因此,对于一个学校项目,我一直在尝试降低跳跃机制。但是,我一直遇到的问题是,玩家能够浮动,而不必在达到一定的跳高后倒下。

我尝试了很多事情,包括通常的想法:何时按下向上键,将jump设置为true,然后在actionPerformed方法中将yVelocity设置为-4。但是,当单击跳转键时,我会记录yPosition,并且当当前yPosition小于原始位置-50时,我将yVelocity设置为0,将fallVelocity设置为1。

这是我的actionPerformed方法中的代码:

if (jumping) {
            if (yPos <= homeY - 50) {
                yVel = 0;
                fallVel = 1;
                falling = true;
                jumping = false;
                System.out.println("bye");
            }   else {
                yVel = -JUMP_SPEED;
            }
        }
        yPos += yVel + fallVel;

'''

这是keyPressed方法中的代码:

if (!jumping && !falling) {
            jumping = true;
            homeY = yPos;
            count = 0;
        }

所以,我希望结果是播放器上升50像素,然后开始下降。但是在程序中,只要按下向上键,播放器就会一直处于浮动状态。

1 个答案:

答案 0 :(得分:0)

作为上/下开关imo,跳跃实际上无法正常工作。最好的方法是使用重力(很容易添加)。

要增加重力,只需在每个刻度上修改玩家的速度即可。这应该在固定时间更新循环上运行,以在不同的帧频下产生一致的重力:

// Play with this number for rate of gravity
player.ySpeed -= 4.9; // Gravity = 9.8m/s^2

然后为您的跳跃添加到播放器ySpeed中。这将创建自然的抛物线跳跃。

if (jumpWasPressed) {
    player.ySpeed += 50; // play with this number for jump height
}

此方法确实假定您有一个用于放置“地面”物体的热箱,以防止玩家跌落地面