【发布时间】:2012-12-09 14:17:08
【问题描述】:
我在 SFML2 中使用 Box2D 并意识到;当我改变世界的重力时,有一段时间没有动过的动态物体不受重力变化的影响。我准备了一个视频来让这个解释更清楚。
有什么解决办法吗?我必须自己做重力吗?为什么会这样?
【问题讨论】:
-
+1 好问题正要问它,发现了这个!
我在 SFML2 中使用 Box2D 并意识到;当我改变世界的重力时,有一段时间没有动过的动态物体不受重力变化的影响。我准备了一个视频来让这个解释更清楚。
有什么解决办法吗?我必须自己做重力吗?为什么会这样?
【问题讨论】:
Box2D 中的对象在休息后进入睡眠状态。更改重力等参数后,您将不得不唤醒沉睡的物体,可能是通过在所有物体上调用WakeUp。当物体与物体发生碰撞时,物体也会自动唤醒,这就是为什么重力似乎在物体与物体碰撞后开始生效的原因。
【讨论】:
WakeUp。您还可以使用noSleep 参数集创建世界。您还可以将allowSleep 设置为 false 来创建对象。
SetAwake(bool):3