我一直在尝试找出如何逐渐加速按下键时的精灵,然后一旦释放键就逐渐减速到停止的方式,就像小行星上的飞船一样。如果可能,我想在没有任何游戏引擎的情况下执行此操作。我在SO上进行了搜索,发现了相关问题,但是我认为他们没有完全回答我的问题。

到目前为止,我想到的是:

//while the key is being pressed
//move by increasing y value
//but continue to increase the amount y increases by as you hold this down,
//until it reaches certain maxSpeed
//when the key is released, gradually decelerate to zero


我只是不确定如何正确地编程,因为我只能想到以相同的值增加而在持有时不会逐渐加速的方法。

所以这是我的目标(逐渐加快然后逐渐慢下来):



我是一个初学者,乐于接受所有想法,但是我可能无法正确解决此问题的事实可能是因为我对别人的了解不多

最佳答案

前面的问题几乎涵盖了该主题,但是如果您想要完美,还需要注意一件事:不均匀的时间片,即持续时间不同的滴答声。

通常,您的tick()方法应接受当前时间和最后一次滴答的持续时间作为参数。 (如果不是,那么您需要通过查询当前时间并记住最后一次滴答发生的时间来计算最后一次滴答的持续时间,以便可以从另一个中减去一个。)

因此,在每个刻度线上,您都不应简单地将当前速度添加到您的头寸中。您应该在每个刻度上执行的操作是将当前速度乘以最后一个刻度的持续时间乘以您的位置。

这样,如果一个滴答声发生得非常快,而另一个滴答声需要很长时间才能完成,那么您的飞船的运动仍将是均匀的。

09-05 14:16