所以,为了学校的一个项目,我一直在尝试做一个跳跃装置。然而,我一直遇到的问题是,玩家只能漂浮在空中,而不是在达到一定的跳跃高度后倒下。
我尝试过很多方法,包括当按下up键时的正常想法,将跳跃设置为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个像素,然后开始下降。但在程序中,只要按下向上键,播放器就会保持浮动。
发布于 2019-05-26 09:28:01
作为向上/向下开关,跳跃并不能真正正常工作。最好的方法是使用重力(这很容易添加)。
要增加重力,只需修改玩家的速度,每次滴答。这应该在固定时间更新循环上运行,以在不同的帧速率下产生一致的重力:
// 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
}这种方法假设你的“地面”物体有一个热盒来防止玩家掉到地面上。
https://stackoverflow.com/questions/56309930
复制相似问题