我在SFML2中尝试使用Box2D时发现一个问题:当我改变世界重力的时候,一段时间内未被碰触的动态物体不会受到重力影响。我准备了一个视频以更清晰地解释这个问题。
是否有解决办法?我需要自己制作重力吗?为什么会出现这种情况? 这是视频链接。注意,如果物体停止移动一小段时间,则它们不会受到最近移动物体的影响。
是否有解决办法?我需要自己制作重力吗?为什么会出现这种情况? 这是视频链接。注意,如果物体停止移动一小段时间,则它们不会受到最近移动物体的影响。
在Box2D中,物体在静止后会进入休眠状态。在更改重力等参数后,您需要唤醒所有休眠对象,可能需要调用所有对象上的WakeUp
方法。当某些物体与休眠物体发生碰撞时,也会自动唤醒这些物体,这就是为什么重力在某些物体发生碰撞后开始生效的原因。
WakeUp
。 您还可以使用设置为“noSleep”参数创建世界。 您还可以将对象创建为allowSleep
设置为false。 - yidingSetAwake(bool)
:3 - user569322