我隐约怀疑我做错了。它现在起作用了,引力把物体拉向地面,但我在操纵物体的速度时遇到了麻烦。
这是什么,是一个球跳向地面。
我还有一个名为“jump”的函数,它只是将jSpeed添加到yvel中
我可以增加gravity,它下降得更快。
我可以提高jSpeed的速度,它上升的时间会更长,但不会更快
但我不能让它做得更快。它看起来非常慢,这可能是因为我的模拟器平均每秒11帧。
只是我的模拟器,还是我这边的东西?

float time = elapsedTime/1000F;
if (speed < maxSpeed){
    speed = speed + accel;
}
if(mY + mVelY < Panel.mHeight){ //0,0 is top-left
    mVelY += (speed);
}

if (!(mY + height >= Panel.mHeight)){
    mVelY = mVelY  + gravity ;
}

mX  =  (float) (mX +(mVelX * time));
mY =  (float) (mY + (mVelY * time));

最佳答案

我认为你在这里有正确的总体思路,但是很多关于你的代码的东西都是令人困惑的。
我的问题主要是关于变速-在我看来,你的球正被变速和加速加速,直到达到最高速度。相反的是重力把球拉下来(加速)。
现在通常情况下,这不是你描述的“跳跃”的方式。所以对我来说,当玩家点击“跳跃”时,你应该将yvel设置为jspeed,然后让等式中的重力部分把它降下来——也就是说,如果你删除了代码:

if(mY + mVelY < Panel.mHeight){ //0,0 is top-left
  mVelY += (speed);
}

然后它会上升一段时间,然后将动量释放到重力上,然后再下降——就像上面的代码一样,它一直向上推,直到到达顶部,一旦开始下降,它就会向上推。
我想知道围绕speed和maxspeed的代码是否应该作用于xvel而不是yvel,正如您所编写的那样-这会更有意义。

09-26 14:15