我正在创建java游戏(我现在是初学者),我想从某种平台游戏开始。
我想知道怎样才能让玩家跳起来(我知道如何让他上下移动),但我不知道如何让他在上升后回归。
这是我的代码:
public void keyPress() {
if (listener.arrowUp) {
Jump();
}
}
private void Jump() {
if(player.get(1).getPosY() > maxJump) {
player.get(1).moveY(-10);
} else if(player.get(1).getPosY() == maxJump) {
player.get(1).moveY(85);
}
}
所以......只要按下'w',玩家向上移动-10px,当他击中maxJump(这是375,玩家在开始时的位置是465)时,他“传送”回到465而不是向下滑回就像他上去时一样..如果没有视频,很难解释这个问题,但我希望有人能理解并帮助我。
答案 0 :(得分:0)
This问题为您提供了基本答案。现在,在您的跳转功能中,您只需设置vertical_speed
一次,每次只调用fall()
并添加一些moveY
。
答案 1 :(得分:0)
以下是两种选择:
选项1.模拟一些非常简单的物理。您向玩家添加力量,因此按向上箭头将增加一个使玩家向上移动的力量。不断施加重力,因此它会逐渐抵消按下向上箭头时施加的力。也许你只想在垂直方向上使用力来做这样的事情:
// Each frame
if(notOnTheGround){
verticalVelocity -= GRAVITATIONAL_CONSTANT;
}
// When user jumps
vertivalVelocity += JUMP_FORCE;
选项2.另一种方法是使用projectile motion为跳跃设置动画。
// Each frame
if(isJumping){
verticalVelocity = initialVelocity*sin(angle) - g*animationTime;
animationTime += TIME_STEP;
}
// When user jumps
isJumping = true;
animationTime = 0;
initialVelocity = ... // calculate initial velocity