创建Java 2D引力?

时间:2014-04-07 08:19:06

标签: java 2d platform gravity

我正在创建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而不是向下滑回就像他上去时一样..如果没有视频,很难解释这个问题,但我希望有人能理解并帮助我。

2 个答案:

答案 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