因此,对于一个学校项目,我一直在尝试降低跳跃机制。但是,我一直遇到的问题是,玩家能够浮动,而不必在达到一定的跳高后倒下。
我尝试了很多事情,包括通常的想法:何时按下向上键,将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像素,然后开始下降。但是在程序中,只要按下向上键,播放器就会一直处于浮动状态。
答案 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
}
此方法确实假定您有一个用于放置“地面”物体的热箱,以防止玩家跌落地面