Box2D:边缘形状和链形状使用不同的顶点坐标

时间:2012-05-27 21:58:41

标签: iphone box2d

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

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

1 个答案:

答案 0 :(得分:0)

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

  

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