首页 > 解决方案 > 多物体碰撞检测与响应

问题描述

所以我在 3D 空间中实现了凸多面体的碰撞检测,使用 GJK 检测碰撞并使用 EPA 获取分辨率矢量。当一个对象只与另一个对象发生碰撞时效果很好,当一个对象与多个对象发生碰撞时如何处理碰撞?考虑以下场景,红框是玩家向右走,两个黑框只是玩家可以行走的一些物体(受重力影响,玩家在这些物体内向下移动): 在此处输入图像描述 与右框碰撞的最小分辨率向量为直接向左的方向,与左框碰撞的最小分辨率向量为笔直向上的方向。因为盒子可以以任意顺序出现,首先从正确的对象中解析玩家会导致突然停止。然后玩家会从左边的物体上得到解决,将他/她向上移动。效果是玩家撞到了墙。首先从左侧对象开始可以缓解这个问题,因为这样玩家就不会与右侧对象发生碰撞。所以也许有某种不同的顺序来应用分辨率向量?

你如何防止这种情况发生?我显然不希望玩家在冲水物体上运行然后突然停止。

对象和玩家也可以是 3D 空间中的任意凸多面体,如果玩家沿着墙壁滑动或跳跃并滑过天花板,该解决方案应该能够处理相同的情况。

标签: collision-detectioncollision

解决方案


推荐阅读