【发布时间】:2013-03-26 01:07:45
【问题描述】:
考虑一个 3D 太阳系模拟。
我的模拟循环:
[Calculate new positions]->[Render]->[Calculate new positions]->[Render] etc....
这个循环以 25FPS 的速度运行。
我的模拟中的一颗行星正以非常快的速度向太阳移动(在碰撞过程中)。让我们看看模拟循环:
- 计算行星和太阳的位置(它们尚未碰撞,但彼此非常接近)。
- 渲染场景。
- 由于 FPS 不是无限的,因此在下一次迭代之前会有一个小暂停。
- 计算行星和太阳的位置——这就是我的问题的症结所在——它们没有发生碰撞,因为在“小暂停”期间,行星“穿过”了太阳,它们的位置现在相距很远。碰撞检测算法不会检测到任何碰撞。
我在这里看到的唯一解决方案是:
- 提高 FPS
- 降低我的行星的速度(降低引力常数??)
- 有一个单独的模拟循环而不是在渲染循环旁边运行,但速度更快
对于任何感兴趣的人,我正在使用three.js。
【问题讨论】:
标签: javascript three.js simulation physics game-physics