我正在尝试使用Bullet和OpenGL制作基本的第一人称射击游戏。我的问题是我的刚体没有高速碰撞。
我的子弹将穿过我拥有的任何其他刚体,例如墙壁。将速度降低到小于10确实会导致碰撞,但这对于移动的子弹来说太低了。子弹也快速移动(我知道这是一个快速移动的子弹,但有时我甚至看不到它,不确定是否预期)。
我认为这与我如何踩踏模拟有关?阅读它让我感到困惑。如何才能使我的物体始终碰撞(至少在合理地快速行驶时),如果可能的话,有没有办法减慢模拟速度,同时保持正确的子弹速度等,这样我才能真正看到子弹移动和碰撞?
答案 0 :(得分:1)
以下是一些解决方法: - 从How can I avoid missing collisions for fast moving objects? - an official FAQ
复制
- 较小的时间步数
- 沿着动作挤出物体
- 射线投射到新位置
- 扫掠碰撞试验(凸铸,线性铸造)
- 连续碰撞检测,包括旋转运动
请阅读链接了解更多详情。这不是一个微不足道的问题 在尝试任何事情之前要问一件重要的事情:你真的需要高速物体吗? 它不是免费的(花费更多的CPU)。
这是另一个有用的链接(尽管不太有用):https://gamedev.stackexchange.com/questions/11961/how-can-i-enable-ccd-in-bullet-physics