2

我正在使用 OpenGL 在 3D 环境中开发游戏。我正在为大多数对象/世界碰撞实现一个扫描椭球碰撞检测/响应系统,它工作正常。

我遇到的问题是将该系统与对象-对象碰撞检测系统相结合。我在设计阶段试图解决的真正问题是查看可能停止或改变另一个对象运动的对象(比如一些可以移动的板条箱,但当玩家碰到它们时充当“墙”。)

我想我将不得不做类似于以下的事情:

  1. 找到物体的位移
  2. 找出物体与世界碰撞的最早时间(a)
  3. 找出物体与任何其他物体碰撞的最早时间(当然是在广泛阶段剔除)
  4. 将对象沿位移移动(a)或(b)中的较小者并执行响应
  5. 迭代直到完全使用置换

这个对吗?这似乎会非常昂贵,因为我必须在每次检查迭代时检查每个可能的碰撞对象。

另一个问题:推动其他对象的对象呢:

例如,假设一个板条箱掉落并推动了一名玩家。我需要移动板条箱,直到它撞到玩家,然后在完成板条箱的移动之前在玩家被推动时对玩家进行整个碰撞检测运行。这似乎也可能变得非常昂贵,因为推送可能会导致另一次推送,依此类推。

非常感谢任何指导。

4

0 回答 0