我尝试使用box2d的SetAsArray函数对俄罗斯方块形状进行建模。但是这些形状不能正确地与其他物体碰撞,有时会掉落,有时会潜入水中。正方形或圆形形状没有问题。
fixDef.shape.SetAsArray([
new b2Vec2(-1,1.5),
new b2Vec2(-1,-1.5),
new b2Vec2(1,-1.5),
new b2Vec2(1,-0.5),
new b2Vec2(0,-0.5),
new b2Vec2(0,1.5)],6
); // Tetris shape
bodyDef.position.Set(7,0);
var body=world.CreateBody(bodyDef);
body.CreateFixture(fixDef);
我做了一个小提琴以显示效果:
http://jsfiddle.net/lavisrap/JrzPH/598/
最佳答案
从Box2D手册中:“多边形形状是实心凸多边形。当连接内部两个点的所有线段均不与多边形的任何边交叉时,多边形就是凸形。”
http://www.box2d.org/manual.html