我正在尝试围绕对象创建OBB,然后使用DirectX 11和C ++将它们碰撞。这一切都正常,直到我旋转一个(或多个)框,然后碰撞检测太早返回true。它似乎仍然“正确”碰撞但是太早(如在边界框中太大)。我认为我在基本面上出错了所以这里是我已经完成的步骤的快速细分:
创建一个包含Vector mCentre,Float [3] mExtents和Vector [3] mLocalAxes的OBB结构。
我通过找到“左”加上一半的宽度,冲洗并重复其他轴来得到中心。
范围是“半宽”,所以宽度,高度和深度/ 2
局部轴取自矩阵的前3行。
然后我使用一个函数来检查所有15个轴,以测试一个分离轴,如果找到一个,则返回false。
如果有人能在我的逻辑中看到一个缺陷,并指出它会很棒! (我感觉我的中心计算错了)
通常我会提出代码,但这是课程作业,所以我更愿意找到我的思路错误的地方!
提前致谢(对不起文字墙)