几小时前我问了一个类似的问题,但我认为在这个问题中有太多的信息,所以我删除了那一个,并使这一个更相关。减速不按预期工作
我试图移动一个对象在指定时间内加速度递减,但在对象到达目的地之前加速度达到0。
我计算加速这样的:
//Linear acceleration starts at 0 and finishes at 2.
acceleration = this.elapsed/(this.duration/2.0f);
加速度为0和2之间的值取决于有多少时间已过。经过时间接近(总)持续时间时,该值将接近2。
所以计算减速,我会做:
//Linear deceleration starts at 2 and finishes at 0.
acceleration = 2.0f - this.elapsed/(this.duration/2.0f);
这似乎工作得很好,但减速的对象永远不会到达目的地,大约99%的elapsedTime变得比总时长的距离,导致加速度变为负值。换句话说,它似乎以1%的速度减速过快。
原始加速度完美地工作,线速度也是如此。这只是减速不能正常工作。
我做错了什么?
感谢
请说明你表达的数量(加速度,速度,位移,时间?)以及相关变量的单位。正如我现在读的那样,你正在设置加速=时间/时间,这是没有意义的。 –
什么样的数据类型已经过了,持续时间是多少?他们也漂浮或是整数? – mclark1129
在我的代码中,目前持续时间是2000年,这意味着对象需要2秒才能到达目的地。 已用时间表示物体离开初始位置后已移动了多长时间。所以当它移动1秒时,加速度将会是1.0f。当它移动0.5f秒时,加速度将是0.5等。然后,我将其反转为减速,所以在0.5秒之后,如果物体正在减速,则加速度为1.5f。这使我的平均加速度为1.0,因此它在到达目的地的同时没有加速的物体。 – Orujimaru