对于Jump'n'Run比赛不同,我试图做一个跳跃,我发现这个功能。 的问题是,帧率(time_diff)是系统的不同所以有时它如实施例1,有时是10跳转功能 - 高度帧率
现在,这个功能将基于帧速率
public void jump() {
ySpeed = -100;
}
// time_diff is time difference between this and last frame
public void update(double time_diff) {
y = y - ySpeed * time_diff;
ySpeed = ySpeed + 9.81 * time_diff;
}
导致我的字符跳跃不同的高度
这里也是帧率4和20的示例(这些值不准确,因为我除以20它们),但你看到,与帧速率20它跳到更高(进一步)作为帧速率4.
那么我怎样才能存档它跳跃高度总是不变,不管帧率如何?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 编辑 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
我解决它像这样蒙山的luk2302帮助:
double remaining_time = 0;
final double step_size = 4;
public void jump() {
ySpeed = -100;
}
// time_diff is time difference between this and last frame
public void update(double time_diff) {
remaining_time += time_diff;
while (remaining_time >= step_size) {
update_helper(step_size);
remaining_time -= step_size;
}
}
public void update_helper(double time_diff) {
y = y - ySpeed * time_diff;
ySpeed = ySpeed + 9.81 * time_diff;
}
试图最大化'y'的新价值,反对'y'原值? –
这是讲好你的主题:https://www.youtube.com/watch?v=hG9SzQxaCm8 – Andreas