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

Наиболее эффективный способ использования ContactListener-а

#0
13:45, 4 сен. 2014

Всем привет! Для игры, основным движком для которой является Box2D, использование ContactListener-а, наверное, просто необходимая вещь. Прошу сообщество поделиться соображениями как его правильно использовать. :) Вопрос возникает тогда, когда в игре необходимо слушать события на столкновения различных игровых сущностей у которых должно возникать соответствующее поведение. Тут без кучи флагов не обойтись. Я пишу под Андроид на Java и для объектов участвующих в коллизиях создал специальный интерфейс IContactObject с методом onContact(Object pObject) в который передаю объект с которым произошло столкновение . В результате код слушателя, например beginContact у меня выглядит так:

@Override
public void beginContact(Contact contact) {
  Body A = contact.getFixtureA().getBody();
  Body B = contact.getFixtureB().getBody();
  final Object oA = A.getUserData();
  final Object oB = B.getUserData();

  if (oA != null)
          if (oA instanceof IContactObject) {
      ((IContactObject) oA).onContact(oB);
    }
  if (oB != null)
          if (oB instanceof IContactObject) {
      ((IContactObject) oB).onContact(oA);
    }
        
}
т.е. что делать после коллизии уже решает сам объект в зависимости от того что ему передали.
Вопрос возник тогда, когда мне пришлось отслеживать очень много всяких флагов от которых зависит поведение объекта. А вы как организуете код? Очень бы хотелось послушать альтернативные варианты. Спасибо!


#1
13:52, 4 сен. 2014

Хм, походу и остальные методы слушателя будут выглядеть также ))) я что-то упускаю видимо

#2
14:24, 4 сен. 2014

глянь на сайте iforce, там все подробно об этом box2d изложено.

#3
15:01, 4 сен. 2014

))) один в один. я на правильном пути стало быть

#4
2:09, 5 сен. 2014

название топика в корне неверное : )

низзя плясать под дудку используемого middleware, оно потому так и называется, что это просто удобная прослойка
правильный путь состоит в написании своего решения с использованием относительно произвольных прослоек
"своё решение" и есть архитектура

#5
2:19, 5 сен. 2014

Sh.Tac.
поправил))

Box2DФорумОбщее

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