我正在创建一个具有许多顶点的物体,以与场景中的另一个物体发生碰撞。这是通过b2ChainShape
完成的,但我首先尝试创建该链的单个边(v2v
是坐标转换方法):
b2Vec2 v1 = [U v2v:CGPointMake(0, 150)];
b2Vec2 v2 = [U v2v:CGPointMake(50, 150)];
b2EdgeShape shape;
shape.Set(v1, v2);
这可以按预期工作:其他实体与此边缘碰撞。奇怪的是,当链形状使用相同的顶点时,没有碰撞:
b2Vec2 vertices[2];
vertices[0] = [U v2v:CGPointMake(0, 150)];
vertices[1] = [U v2v:CGPointMake(50, 150)];
b2ChainShape shape;
shape.CreateChain(vertices, 2);
知道为什么吗?链是否使用一些不同的坐标系?
答案 0 :(得分:0)
请阅读我从Box2d手册中获取的以下段落。 http://www.box2d.org/manual.pdf
边缘形状是线段。提供这些是为了协助制作 为您的游戏提供自由形式的静态环境。一个主要的限制 边缘形状是它们可以与圆和多边形碰撞而不是 与自己。 Box2D使用的碰撞算法需要这样做 两个碰撞形状中的至少一个具有体积。边缘形状没有 音量,所以边缘碰撞是不可能的。