Войти
ПрограммированиеФорумГрафика

Libgdx физика

#0
10:17, 13 мая 2014

Подскажите каким способом в bullet обнаруживать пересечения фигур?
Вот в Box2D  есть sensors,а в bullet?
Сколлько искал подобного я не нашел.
Нашел только setFlags(btCollisionObject.CollisionFlags.CF_NO_CONTACT_RESPONSE);
Но я так понял то при этом флаге мне просто не будет возвращаться callback  о столкновении.Так как обычное физическое взаимодействие происходит.


#1
10:18, 13 мая 2014

P.S сорри не там тему создал.

#2
10:28, 13 мая 2014

http://www.bulletphysics.org/mediawiki-1.5.8/index.php/Collision_… _and_Triggers

#3
10:31, 13 мая 2014

Guppy the Cat
смотрел но не понял, там нет не слова про сенсоры.

#4
12:02, 13 мая 2014

Не у кого не было такой проблемы?

#5
16:49, 15 мая 2014

Вроде бы нашел btGhostObject.
Но вот не получается сделать обнаружение коллизии:
Код при создании :

        btGhostPairCallback ghostCall = new btGhostPairCallback();
        collisionWorld.getBroadphase().getOverlappingPairCache().setInternalGhostPairCallback(ghostCall);

        btGhostObject ghostObj = new btGhostObject();
        btCollisionShape shape = new btBoxShape(new Vector3(2, 2, 2));
        ghostObj.setCollisionShape(shape);
        Matrix4 trans = new Matrix4();
        trans.idt();
        trans.setTranslation(0,5,0);
        ghostObj.setWorldTransform(trans);
        ghostObj.userData = "LOL";
        ghostObj.setCollisionFlags( btCollisionObject.CollisionFlags.CF_NO_CONTACT_RESPONSE | ghostObj.getCollisionFlags());
        collisionWorld.addCollisionObject(ghostObj, (short)btBroadphaseProxy.CollisionFilterGroups.SensorTrigger,(short)(btBroadphaseProxy.CollisionFilterGroups.AllFilter & btBroadphaseProxy.CollisionFilterGroups.SensorTrigger));

В методе update()
 int count = collisionWorld.getNumCollisionObjects();
        btCollisionObjectArray array =  collisionWorld.getCollisionObjectArray();
        for(int i = 0;i < array.size() ; i++) {
            btCollisionObject object = array.at(i);
            {
                if (object instanceof btGhostObject) {
                    btCollisionObjectArray array1 = ((btGhostObject) object).getOverlappingPairs();
                    for (int i1 = 0; i1 < array1.size(); i++) {
                        System.out.println("Objects : " + array1.at(i1).userData);
                    }
                }
             }
        }

#6
12:10, 16 мая 2014

Так я понял что шел в неправильном направлении, подскажите как мне сделать в bullet physics аналог sensor в бокс2Д.
Мне нужно чтобы при пересечении объектов не происходило столкновение(могли проходить сквозь) и лишь выкидывался callback о том что они пересекаются

ПрограммированиеФорумГрафика

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