你好,这实际上是我的第一个问题。我正在开发一个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));
}
答案 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;
您是否希望所有这些都持续增长?因为那样会发生。 您代码的哪一部分计算跳跃的高度?