2011-12-15 2 views
1

Код:Cocos2d + Box2d: Как создать генерацию без вершины вершины с помощью VertexHelper?

b2PolygonShape polyShapeDef; 
int num = 19; 
b2Vec2 verts[] = { 
    b2Vec2(-6.5f/PTM_RATIO, -29.5f/PTM_RATIO), 
    b2Vec2(-31.5f/PTM_RATIO, 3.5f/PTM_RATIO), 
    b2Vec2(-31.5f/PTM_RATIO, 5.5f/PTM_RATIO), 
    b2Vec2(-30.5f/PTM_RATIO, 9.5f/PTM_RATIO), 
    b2Vec2(-27.5f/PTM_RATIO, 15.5f/PTM_RATIO), 
    b2Vec2(-20.5f/PTM_RATIO, 22.5f/PTM_RATIO), 
    b2Vec2(-17.5f/PTM_RATIO, 24.5f/PTM_RATIO), 
    b2Vec2(-13.5f/PTM_RATIO, 26.5f/PTM_RATIO), 
    b2Vec2(-10.5f/PTM_RATIO, 27.5f/PTM_RATIO), 
    b2Vec2(-5.5f/PTM_RATIO, 28.5f/PTM_RATIO), 
    b2Vec2(3.5f/PTM_RATIO, 28.5f/PTM_RATIO), 
    b2Vec2(8.5f/PTM_RATIO, 27.5f/PTM_RATIO), 
    b2Vec2(11.5f/PTM_RATIO, 26.5f/PTM_RATIO), 
    b2Vec2(17.5f/PTM_RATIO, 23.5f/PTM_RATIO), 
    b2Vec2(25.5f/PTM_RATIO, 15.5f/PTM_RATIO), 
    b2Vec2(28.5f/PTM_RATIO, 9.5f/PTM_RATIO), 
    b2Vec2(29.5f/PTM_RATIO, 6.5f/PTM_RATIO), 
    b2Vec2(29.5f/PTM_RATIO, 2.5f/PTM_RATIO), 
    b2Vec2(2.5f/PTM_RATIO, -29.5f/PTM_RATIO) 
}; 

polyShapeDef.Set(verts,num); 
polyShapeDef.m_vertexCount = num ; 

b2BodyDef polyBodyDef; 
polyBodyDef.type = b2_dynamicBody; 
polyBodyDef.userData = inSprite; 
polyBodyDef.position.Set(inSprite.position.x/PTM_RATIO, inSprite.position.y/PTM_RATIO); 
b2Body *parachutBody = world->CreateBody(&polyBodyDef); 

b2FixtureDef polyFixtureDef; // Define the fixture 
polyFixtureDef.shape = &polyShapeDef; 
polyFixtureDef.density = 20.0f; 
polyFixtureDef.friction = 0.9f; 

parachutBody->CreateFixture(&polyFixtureDef); 

// Над вершиной списка генерируется 'VertexHelper'. Что-то не так с кодом? получение аварии ..

+0

Уточнить детали? Как он падает (сообщения об ошибках), у вас есть стек? Вы пытались изолировать проблему? Если нет, сделайте это, сделав код как можно меньшим (также облегчит нам помощь). – csl

ответ

3

Там есть максимальное число вершин Box2D поддерживает методы, как

polyShapeDef.Set(verts,num); 

Это число в b2_maxPolygonVertices, и я считаю, по умолчанию это ограничивает количество вершин в форме многоугольника 8 вершин.

Хотя вы можете увеличить это число, имейте в виду, что, вероятно, есть веская причина (скорее всего: производительность), почему Box2D разрешает только 8 вершин для многоугольников. Это может очень сильно повлиять на экспоненциальную функцию, время работы которой может удваиваться для каждой дополнительной вершины.

Лучшее решение - уменьшить количество вершин или прикрепить две или более фигуры к телу, чтобы создать зону столкновения тела.

+0

Спасибо, сэр. теперь я уменьшил количество вершин и его работоспособность. – Guru

Смежные вопросы