2010-09-06 79 views
1

可能重复:
Collision detection between two general hexahedrons碰撞检测旋转立方体

现在,我通过查找最小值和最大值,做边框检查做碰撞检测。不幸的是,我的球员立方体与相机一起旋转,当球员处于45度角时,这会造成一些令人讨厌的结果。约束条件是每个立方体都是轴对齐的,并且有8个顶点,但是玩家可能会旋转(基本上我对每个顶点做sin,cos,并围绕立方体的中心旋转。我的播放器旋转?

感谢

+2

我是否错过了一些东西或者你是否一遍又一遍地问同样的问题? – Eiko 2010-09-06 13:20:34

+0

这可能不是完全重复的。 Milo正在使用非标准词汇表:“立方体”表示六面体(即六面体图形),“轴对齐”对我来说并不完全清楚,但可能意味着“相反的面是平行的”。他并没有清楚地区分可用的多种规则性和直角性。这个问题可能会稍微受限于最近的一个问题,但他为一般情况提供了两种工作算法。无论如何,我再也不会受到困扰了。 – dmckee 2010-09-06 16:37:19

+0

游戏开发语言中的“轴对齐”意味着面都与三个主轴平面平行,即在X = 0,Y = 0和Z = 0的平面上。在我上学的地方,“立方体”被定义为一个六面体,所有边缘和所有边缘之间具有相同长度的直角。 – 2010-09-07 21:48:49

回答

-1

如果其中一个立方体没有旋转,那么它很容易检查单个点是否在立方体内(带有边界检查)。因此,取出旋转的立方体的每个8节点并检查它是否落入未旋转的立方体内。

+2

是否有可能两个立方体可以相互交叉,但是没有任何顶点到另一个的内部? – andand 2010-09-06 15:39:07

+0

我们已经在这个问题的前两个化身中的每一个中都已经过了这个算法。这是行不通的。 – dmckee 2010-09-06 16:33:56

+0

我同意这个限制。嗯... – ja72 2010-09-07 20:09:07

1

查找每对平面的交线,然后确定该交线是至少在两个多边形的部分。

或者,更简单解决方案,假装玩家是球体。

+0

好吧我该如何做球体AABB立方体碰撞检测? – jmasterx 2010-09-06 13:04:57

+0

有时圆柱体可能比球体更好。例如,这是如何在Quake I中完成碰撞检测的。 – doc 2010-09-06 13:06:09

+0

哪一个最简单实施 – jmasterx 2010-09-06 13:07:25