Форма петли Box2d / создание статической формы заземления в Cocos2D

#iphone #c #objective-c #cocos2d-iphone #box2d

#iPhone #c #objective-c #cocos2d-iphone #box2d

Вопрос:

Кто-нибудь знает, какой наилучший метод для создания статического тела основания со многими (~ 10000) вершинами в Box2D (версия, которая поставляется с Cocos2D).

Это то, что я делаю сейчас для cubic beziers, это выглядит нормально, но выполняется немного медленно.

 for (int i = 0; i<segments; i  ) {
    CGPoint p2 = vertices[i 1];
    CGPoint p1 = vertices[i];
    b2PolygonShape poly;
    poly.SetAsEdge(b2Vec2(p1.x,p1.y), b2Vec2(p2.x, p2.y));
    groundBody->CreateFixture(amp;poly,0);
}
  

Люди говорят о b2LoopShape, но не похоже, что она включена в версию Box2d, поставляемую с Cocos?

Есть идеи?

Комментарии:

1. Привет, Эрик. Я могу представить, что многие вершины замедлят работу. Зачем вам так много? Возможно, есть другие варианты. b2LoopShape не входит в комплект поставки cocos2d. Я не знаком с этим, поэтому я не знаю, сколько работы потребуется для переноса этого.

2. Привет, Нэш! На самом деле сейчас она работает нормально, даже на моем iphone 3, но я не стал набирать 10000 вершин, я сократил ее до ~ 2000.

Ответ №1:

Для b2LoopShape вам необходимо заменить external / Box2d на Box2D trunk.

  1. оформить заказ на магистраль Box2D из box2d.
  2. замените cocos2d / external / Box2d на trunk / Box2D / Box2D.
  3. измените проект Xcode для добавления файлов Box2D.
  4. измените некоторые коды для переименованных классов, таких как s / b2DebugDraw / b2Draw/.