Opengl java 弹跳实体
Opengl java bouncing entities
你好,这实际上是我在这里的第一个问题。我一直在开发一个 opengl lwjgl 游戏,我正在研究实体 class.I 已经完成的实体跳跃(我会用这个来做动物)但是 "issue"(99.9% 肯定是我的错)是每次实体接触地形并再次跳跃时,跳跃更高,如我录制的视频所示,这是跳跃的代码 thz =D 我只是想要树向上移动总是一样的。
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));
}
我认为这将是以下增量语句之一:
velocity += initialVelocity;
time += speed;
velocity *= -1;
y += velocity;
你希望所有这些都持续上升吗?因为那就是将会发生的事情。
您的代码的哪一部分计算跳跃的高度?
修正了它只需要做一行简单的代码,甚至速度波动都正确:
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));
}
你好,这实际上是我在这里的第一个问题。我一直在开发一个 opengl lwjgl 游戏,我正在研究实体 class.I 已经完成的实体跳跃(我会用这个来做动物)但是 "issue"(99.9% 肯定是我的错)是每次实体接触地形并再次跳跃时,跳跃更高,如我录制的视频所示,这是跳跃的代码 thz =D 我只是想要树向上移动总是一样的。
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));
}
我认为这将是以下增量语句之一:
velocity += initialVelocity;
time += speed;
velocity *= -1;
y += velocity;
你希望所有这些都持续上升吗?因为那就是将会发生的事情。 您的代码的哪一部分计算跳跃的高度?
修正了它只需要做一行简单的代码,甚至速度波动都正确:
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));
}