1

我正在创建一个具有许多顶点的实体,以与场景中的另一个实体发生碰撞。这是用 完成的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);

知道为什么吗?链是否使用一些不同的坐标系?

4

1 回答 1

0

请阅读我从 Box2d 手册中摘录的以下段落。 http://www.box2d.org/manual.pdf

边缘形状是线段。提供这些是为了帮助为您的游戏制作一个自由形式的静态环境。边缘形状的一个主要限制是它们可以与圆形和多边形碰撞,但不能与自身碰撞。Box2D 使用的碰撞算法要求两个碰撞形状中的至少一个具有体积。边缘形状没有体积,因此边缘边缘碰撞是不可能的。

于 2012-08-03T16:56:28.103 回答