2013-04-07 46 views
3

我在box2d的一个世界里,使用了两边缘体代表一个壁。(我有2,因为可以有2个对象之间的不同角度)Box2D的相邻边缘碰撞

我的问题是,每一次一个圆形物体沿着第一个边缘行进,当它到达第二个边缘时,它会检测到碰撞并从墙壁上弹开。即使两个边缘之间没有角度。

此外,如果我的圆形物体碰到两个边缘之间的交叉点(有或没有角度),它会反弹到未确定的方向。

我该如何解决或防止这种行为?

Collision detected

enter image description here

角度近似

回答

2

共线边我想补充一些预处理这将在两个边共线合并成一个摆脱这样的问题。

对于第二种情况。唯一让我想到的是检测与多个边的碰撞(有一定的容差,肯定不是确切的值),然后计算感兴趣的边的平分线 - 基于此,并且圆对象碰到边的角度计算出新的角度。

+0

我试过你的第一个预处理的建议,它的工作很棒! – 2013-04-07 23:00:59

+0

今天刚刚遇到同样的问题 - 你能否详细说明你是如何做到的?我假设你在做一个本地方法? (激怒我的老板坚持使用Unity :() – batterj2 2014-02-10 16:05:05