Войти
Box2DФорумОбщее

Создание многоугольника

#0
17:51, 5 мар. 2014

Столкнулся с проблемой. При создании многоугольника с количеством вершин больше 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);
      
    }
  }
}


#1
19:05, 5 мар. 2014

Попробуй строит фигуру по часовой стрелке, помоему там есть какой то засол в этом, то есть в данном случае будет так (-30,0)(-15,-40)(15,-40)(30,40)(-30,40)

#2
23:18, 5 мар. 2014

Wells77
> При создании многоугольника с количеством вершин больше 4 тело перестает взаимодействовать с остальными телами а просто проваливается вниз.
В box2D есть метод корректировки вершин (или что-то такое) - хотя может ошибаюсь, я использовал контур из boost.

Хотя... он при создании неправильного polygonShape вроде вываливаться должен на ассерте...

Box2DФорумОбщее

Тема в архиве.