为了账号安全,请及时绑定邮箱和手机立即绑定

Opengl java 弹跳实体

Opengl java 弹跳实体

SMILET 2021-06-14 16:49:19
你好,这实际上是我在这里的第一个问题..我一直在开发一个 opengl lwjgl 游戏,我正在研究实体类。我已经完成了使实体跳转(不适用于动物)但是“问题”(99.9 % 确定这是我的错)是每次实体接触地形并再次跳跃时,跳跃更高,如我录制的视频中所示,这是跳跃的代码 thz =DI 只是希望树始终向上移动。    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 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

修复它只需要做一行简单的代码,它甚至可以正确地调整速度波动:


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));

    }


查看完整回答
反对 回复 2021-06-23
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

我认为这将是这些增量语句之一:


velocity += initialVelocity;

time += speed;

velocity *= -1;

y += velocity;

您是否希望所有这些都不断上升?因为这就是会发生的事情。你的代码的哪一部分计算了跳跃的高度?


查看完整回答
反对 回复 2021-06-23
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信