【发布时间】:2011-04-23 13:58:37
【问题描述】:
我正在开发一款基于 3D 瓷砖的游戏,并且正在使用 AABB 碰撞检测。对于玩家相交的每个立方体,我找到玩家与立方体相交最少的轴,然后沿着该轴将玩家推出立方体。
根据签入多维数据集的顺序,当沿多个多维数据集的边缘滑动时,这可能会导致问题。我创建了一个应该解释问题的图表:
- 箭头#1 是玩家尝试的移动。其他箭头是碰撞响应。
- 在左图中,首先对右侧立方体进行碰撞测试,导致玩家被推向左侧,然后向上推。 (不好)
- 在右图中,首先测试与左侧立方体的碰撞,导致玩家被向上推,此时玩家不再与另一个立方体相交。 (好)
对于解决此问题的最有效方法有什么想法吗?或者有什么更好的方法来处理碰撞响应?
谢谢。
【问题讨论】:
-
也许检查所有碰撞并记录碰撞的时间(或距离)。仅应用最快发生的碰撞。可以选择在剩余的时间步长中继续该过程。
-
因此,如果我按与玩家的距离对玩家与之相交的所有立方体进行排序,然后一次考虑一个,这可能会奏效。我认为最好避免每帧都对事物进行排序,但我不确定这会很重要,因为玩家最多只能与 ?7 发生碰撞?一次块。你觉得那里有什么好担心的吗?
标签: algorithm geometry collision game-physics