Столкнулся с проблемой. При создании многоугольника с количеством вершин больше 4 тело перестает взаимодействовать с остальными телами а просто проваливается вниз. Вот массив вершин например:
var crateCoordVector:Vector.<b2Vec2>=new <b2Vec2>[new b2Vec2(-15,-40),new b2Vec2(-30,0),new b2Vec2(-30,40),new b2Vec2(30,40),new b2Vec2(15,-40)]; new DYNAMIC_BOX_BOOM(450, 300, crateCoordVector);
Вот класс создания тела:
package Data.CLASSES.BOX2D_BODYS { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.b2Body; import Box2D.Dynamics.b2BodyDef; import flash.display.Sprite; import Box2D.Collision.Shapes.b2PolygonShape; import Box2D.Common.Math.b2Vec2; import Box2D.Dynamics.b2Fixture; import Box2D.Dynamics.b2FixtureDef; import flash.display.BitmapData; import flash.display.MovieClip; import flash.display.DisplayObject; public class DYNAMIC_BOX_BOOM { public function DYNAMIC_BOX_BOOM( xPos:Number, yPos:Number, verticesArr:Vector.<b2Vec2>) { var vec:Vector.<b2Vec2>=new Vector.<b2Vec2>(); for (var i:Number=0; i<verticesArr.length; i++) { vec.push(new b2Vec2(verticesArr[i].x/Box2DHelpers.meters,verticesArr[i].y/Box2DHelpers.meters)); } var bodyDef:b2BodyDef = new b2BodyDef(); bodyDef.type=b2Body.b2_dynamicBody; var boxDef:b2PolygonShape = new b2PolygonShape(); boxDef.SetAsVector(vec); bodyDef.position.Set(xPos/Box2DHelpers.meters, yPos/Box2DHelpers.meters); var fixtureDef:b2FixtureDef = new b2FixtureDef(); fixtureDef.density=1; fixtureDef.friction=0.2; fixtureDef.restitution=0.5; fixtureDef.shape=boxDef; var tempBox:b2Body=Box2DHelpers.world.CreateBody(bodyDef); tempBox.CreateFixture(fixtureDef); } } }
Попробуй строит фигуру по часовой стрелке, помоему там есть какой то засол в этом, то есть в данном случае будет так (-30,0)(-15,-40)(15,-40)(30,40)(-30,40)
Wells77
> При создании многоугольника с количеством вершин больше 4 тело перестает взаимодействовать с остальными телами а просто проваливается вниз.
В box2D есть метод корректировки вершин (или что-то такое) - хотя может ошибаюсь, я использовал контур из boost.
Хотя... он при создании неправильного polygonShape вроде вываливаться должен на ассерте...
Тема в архиве.