【发布时间】:2018-03-31 21:41:49
【问题描述】:
我有一个草图,我可以像这样模拟重力:
float acceleration;
float velocity;
float location;
int time= millis();
boolean done = false;
void setup() {
size(200, 200);
acceleration = 0;
velocity = 0;
location = 0;
frameRate(30);
}
void draw() {
background(0);
fill(255);
acceleration = acceleration + .1;
gravity();
ellipse(10, location, 10, 10);
if (location > height && !done) {
float finished = millis() - time;
println(finished/1000.0);
done = true;
}
}
void gravity() {
velocity += acceleration * (1/frameRate);
location += velocity;
acceleration = 0;
}
我想我可以简单地将加速度乘以 1/frameRate 以使模拟运行相同而不管帧速率如何,但它不起作用。如何模拟与帧速率无关的重力或力?
【问题讨论】:
-
我在您的代码中没有看到任何地方将
acceleration乘以1/frameRate?还有为什么你需要这样做? -
我对其进行了编辑以添加它。我正在关注 Shiffman 的这个视频,他在其中谈到了添加力。然而,这种方法会使事物根据帧速率以不同的速度移动。无论是 10fps 还是 100fps,我都希望它以相同的毫秒数到达底部。 youtube.com/watch?v=MkXoQVWRDJs
-
但是为什么你的程序会以不同的帧率运行呢?如果您坚持默认设置,您的生活会轻松很多。
-
因为我想根据真实世界的比例/时间对其进行校准,而且帧速率不够稳定,无法获得准确的结果,尤其是在游戏中经常下降时。
标签: java processing