2014-04-16 3 views
0

Это должен быть быстрый вопрос, с надеждой на быстрый ответ. :) Я использую box2d для проекта боковой скроллера, который я делаю. Все идет хорошо, спасибо за вопрос. : D В любом случае, мой персонаж должен был иметь коробки разного размера, используемые для ограничения. Я думал, что это будет так же просто, как добавление нового крепления к телу, но это не сработало. Он выходит из строя, и я получаю это:Программа Box2D вылетает при использовании нескольких приборов

Java: ./Box2D/Collision/b2Distance.h:103: Const b2Vec2 & b2DistanceProxy :: GetVertex (int32) Const: Утверждение `0 < = индексный & & < m_count 'не удалось.

Я понятия не имею, что это значит. Вот код, который я использую для создания тела и приспособления:

 BodyDef bodyDef = new BodyDef(); 
     bodyDef.type = BodyType.DynamicBody; 
     bodyDef.position.set(level.character.position); 
     Body body = b2world.createBody(bodyDef); 
     level.character.body = body; 

     PolygonShape polygonShapeHead = new PolygonShape(); 
     origin.x = level.character.circleBoundOrigin.x * 2.0f; 
     origin.y = level.character.circleBoundOrigin.y * 3.0f; 
     polygonShapeHead.setAsBox(level.character.circleBoundOrigin.x, 
       level.character.circleBoundOrigin.y, origin, 0); 
     FixtureDef fixtureDefHead = new FixtureDef(); 
     fixtureDefHead.shape = polygonShapeHead; 
     fixtureDefHead.friction = level.character.friction.x; 
     body.createFixture(fixtureDefHead); 

     polygonShapeHead.dispose(); 

     PolygonShape polygonShapeBod = new PolygonShape(); 
     origin = level.character.rectBoundOrigin; 
     polygonShapeHead.setAsBox(level.character.rectBoundOrigin.x, 
       level.character.rectBoundOrigin.y, origin, 0); 
     FixtureDef fixtureDefBod = new FixtureDef(); 
     fixtureDefBod.shape = polygonShapeBod; 
     fixtureDefBod.friction = level.character.friction.x; 
     body.createFixture(fixtureDefBod); 

     polygonShapeBod.dispose(); 

Насколько я знаю, что я делаю все правильно. Так почему это не работает? Почему он падает? Я использую fixturedef. Возможно, это может быть проблемой. Благодаря!

+0

Знаете ли вы, в какой строке происходит ошибка в коде, который вы нам дали? – kabb

+0

Нет, к сожалению. Единственное, что появилось в консоли, - это сообщение выше. – user2082169

+0

Я просто запустил его, и он сработал. Рана это снова, то же сообщение. Иногда это работает, иногда это не так. Что происходит. : | – user2082169

ответ

2

Это происходит, когда вы добавляете/уничтожаете объекты во время world.step(). Если вы динамически добавляете/уничтожаете объекты, вам необходимо поставить их в очередь и обеспечить внесение изменений до или после вызова world.step().

Об этом говорится в этой серии уроков. http://youtu.be/ACQaU2Vr1ao?t=15m26s

+0

Да, я делал это, поэтому я был в замешательстве. Но я решил это. :) – user2082169

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