Использование box2d для обнаружения столкновений, но игнорирует силы

Я использую libgdx и box2d для обнаружения столкновений, но я хочу, чтобы некоторые столкновения были обнаружены, но силы не воспроизводились.

Например, я хочу определить, когда персонаж сталкивается с монетой, но не хочу, чтобы монета влияла на движения игрока.

Возможно ли это даже с помощью box2d? Если так, как я могу сделать это?

4 голоса | спросил Townsfolk 20 SatEurope/Moscow2014-12-20T12:37:11+03:00Europe/Moscow12bEurope/MoscowSat, 20 Dec 2014 12:37:11 +0300 2014, 12:37:11

2 ответа


0

Я не уверен, что вы хотите сделать, но если я понимаю, что вы хотите сделать, вы можете создать тип датчика, этот псевдо-пример:

FixtureDef fd1 = new FixtureDef();
//fd1.friction = 0.5f;

PolygonShape pSTest = new PolygonShape();

//size you want for example:
pSTest.setAsBox(4f / PIXEL_POR_METRO, 
                1f / PIXEL_POR_METRO, 
                new Vector2(22f / PIXEL_POR_METRO, -1f / PIXEL_POR_METRO),
                0f);

fd1.shape = pSTest;
fd1.isSensor = true;

yourBody.createFixture(fd1).setUserData("yourId");

выглядит интерфейс ContactListener, например preSolve

обратите внимание, что датчик, это не называется для датчиков.

Информация

setAsBox(float hx, float hy, Vector2 center, float angle)

Parameters:
hx the half-width.
hy the half-height.
center the center of the box in local coordinates.
angle the rotation in radians of the box in local coordinates.
ответил Angel Angel 20 SatEurope/Moscow2014-12-20T19:33:33+03:00Europe/Moscow12bEurope/MoscowSat, 20 Dec 2014 19:33:33 +0300 2014, 19:33:33
0

Цитируется по адресу: https://gamedev.stackexchange.com/a/22542

Читайте о фильтрации столкновений в руководстве Box2D:

  

Фильтрация столкновений позволяет предотвратить столкновения между приборами.   Например, скажем, вы делаете персонаж, который ездит на велосипеде. Ты хочешь   велосипед для столкновения с местностью и персонаж для столкновения   с ландшафтом, но вы не хотите, чтобы персонаж сталкивался с   велосипед (потому что они должны пересекаться). Box2D поддерживает такое столкновение   фильтрация по категориям и группам.

     

Box2D поддерживает 16 категорий столкновений. Для каждого светильника вы можете   указать, к какой категории он относится. Вы также указываете, что другое   категории, с которыми этот прибор может столкнуться. Например, вы могли бы   указать в многопользовательской игре, что все игроки не сталкиваются с каждым   другие и монстры не сталкиваются друг с другом, но игроки и   монстры должны сталкиваться

Ссылка на руководство здесь . (Поиск по фильтрации) ,

ответил John Cipponeri 20 SatEurope/Moscow2014-12-20T12:41:37+03:00Europe/Moscow12bEurope/MoscowSat, 20 Dec 2014 12:41:37 +0300 2014, 12:41:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132