我正在使用Box2d v2.3以下box2d方法需要一个bool"唤醒":
inline void b2Body::ApplyLinearImpulse(const b2Vec2& impulse, const b2Vec2& point, bool wake)
Run Code Online (Sandbox Code Playgroud)
它有什么作用?无论我将其设置为YES还是NO,它对我的物理学似乎没有明显的影响.
早期版本的Box2d不接受布尔 - 他们只是冲动和指向.
编辑:同样,以下方法也是如此:
inline void b2Body::ApplyForce(const b2Vec2& force, const b2Vec2& point, bool wake)
Run Code Online (Sandbox Code Playgroud)
睡眠是什么意思?好吧,模拟身体的成本很高,所以我们需要模拟的越少越好。当身体静止时,我们希望停止模拟它。
当 Box2D 确定一个物体(或一组物体)已经静止时,身体进入睡眠状态,CPU 开销很小。如果一个身体醒着并与一个睡着的身体发生碰撞,那么这个睡着的身体就会醒来。如果连接到它们的关节或触点被破坏,它们也会被唤醒。您也可以手动唤醒身体。
所以 sleepmode 是一种提高性能的方法。唤醒一个物体是有意义的,当你对它施加一个力时,所以如果它还没有醒来,它会被唤醒并被模拟,因为这就是你可能想要的。
如果它已经醒了,也没关系。它不会被设置为与wake=false它一起睡觉并再次唤醒它,不会改变任何东西。为了安全起见,您应该始终使用wake=true. 在最坏的情况下,它会稍微影响性能,但只会影响一小会儿。然后 Box2D 无论如何都会让它重新进入睡眠状态。