OpenGL Java弹跳实体

时间:2018-08-01 15:47:53

标签: java opengl lwjgl

你好,这实际上是我的第一个问题。我正在开发一个opengl lwjgl游戏,我正在研究实体类。我已经完成了使实体跳转(对动物不宜使用)的努力,但是“问题“(99.9%的人肯定是我的错)是,实体每次触摸地形并再次跳跃时,跳跃都更高,如我录制的视频所示,这是跳跃的代码thz = DI只是希望树始终向上移动相同。

Video

    double velocity = 0;
double initVelX;
double initVelZ;
double time = 0;
float x;
float y;
float z;

public void bounce() {

    double initialVelocity = 0.1;       
    double speed = 1/2500.0;

    if(time == 0) {
        velocity += initialVelocity;
    }
    time += speed;
    velocity = velocity - 9.8 * speed;
    if(y + velocity < 0.1){
        velocity *= -1;
    }
    y += velocity;
    setPosition(new Vector3f(getPosition().x,y,getPosition().z));
}

2 个答案:

答案 0 :(得分:0)

修复了它只需执行简单的代码行,甚至速度波动正确的情况:

double velocity = 0;
    double initVelX;
    double initVelZ;
    double time = 0;
    float x;
    float y;
    float z;

    public void bounce() {

        double initialVelocity = 0.1;       
        double speed = 1/2500.0;

        if(time == 0) {
            velocity = initialVelocity;
        }

        time += speed;
        velocity = velocity - 9.8 * speed;
        if(y + velocity < 0.1){
            velocity *= -1;
            velocity = initialVelocity;
        }
        y += velocity;
        setPosition(new Vector3f(getPosition().x,y,getPosition().z));
    }

答案 1 :(得分:-1)

我认为这将是这些增量声明之一:

velocity += initialVelocity;
time += speed;
velocity *= -1;
y += velocity;

您是否希望所有这些都持续增长?因为那样会发生。 您代码的哪一部分计算跳跃的高度?