在Bullet物理引擎中通过施加冲量来防止碰撞

3
我正在使用Bullet和Ogre开发第三人称射击游戏。当角色模型与世界中的物体(例如电源增益)发生碰撞时,碰撞会对角色施加一个力并使其旋转。我该如何防止碰撞对角色造成力的影响?
我已经为btDynamicsWorld::setInternalTickCallback设置了一种方法,因此我知道哪些物体正在发生碰撞以及btManifoldPoint。
请注意,我为身体应用扭矩以使它们平稳旋转,因此不能简单地防止旋转。
谢谢您的帮助。

你的电源对象有质量吗? - Jay
它们的质量为0。角色的质量为80。 - tgt
1个回答

1

我对你提到的物理引擎不太熟悉,但是我对真实的物理学有一些了解...

基本上,如果你画出一个自由体图和代表力的箭头,你就可以确定净效应。或者如果你知道所需的净效应,你就可以找出需要添加力或移除力的位置。

你可以在碰撞时添加相等而反向的力/扭矩。这将使你的物体净受力为零。

或者你可以将导致力的元素变成无质量的。力=质量*加速度。如果质量为零,而你的物理引擎是基于真实世界的物理学,那么它在碰撞时不应该产生任何净力。

希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接