我正在用LevelHelper
(SpriteKit
+ Box2D
)开发一个游戏,我遇到了一个问题。
Box2D
依赖于FPS的计数。如果是60英尺,那么身体以每秒10米的速度移动,如果30 per,则以每秒5米的速度移动。无论对FPS的计数如何,都必须保持恒定的速度。
是否有任何解决方案将Box2D
从FPS计数中取消?
发布于 2017-09-01 14:52:26
关于模拟时间,Box2D只取决于世界步长的时间增量设置为什么。如果将时间增量设置为每秒的1/60,那么它将与显示刷新的60 but匹配,但时间增量可以是其他值。
一般说来,随着时间增量的减小,模拟变得更加精确。所以,如果没有使用模拟每秒1/60秒的世界步骤,而是使用模拟1/120秒的步骤,那么您将有一个更精确的模拟。使用较小的时间增量,还可以使身体的最大速度(以每秒钟模拟旅行的距离)更快。
这取决于Box2D库用户如何协调显示刷新的世界步骤。只要知道改变世界步长时间--就像在调用world step方法之间使用实时运行的时间一样--可能会导致不现实的物理效果。因此,虽然在模拟过程中在运行时改变世界步长时间增量是可能的,但我不建议这样做。
https://stackoverflow.com/questions/45999882
复制相似问题