如何检查两个Box2d机构是否在任何时刻发生碰撞/重叠?

Les*_*tat 7 java android box2d libgdx

如何检查2个物体(两个夹具)是否碰撞(重叠)?

我知道ContactListener在它们开始碰撞时和停止时触发方法.但有没有办法在任何特定时刻检查它?喜欢:

if(body1.overlaps(body2))...
Run Code Online (Sandbox Code Playgroud)

其他细节,其中之一是传感器.这是在libgdx中.

Jag*_*ngh 5

你可以申请setContactlistner你的世界对象

world.setContactListener(new ContactListener() {

            @Override
        public void beginContact(Contact contact) {

         if(contact.getfixtureA.getBody().getUserData()=="body1"&&
               contact.getfixtureB.getBody().getUserData()=="body2")
            Colliding = true;
            System.out.println("Contact detected");
        }

        @Override
        public void endContact(Contact contact) {
            Colliding = false;
            System.out.println("Contact removed");
        }

        @Override
        public void postSolve(Contact arg0, ContactImpulse arg1) {
            // TODO Auto-generated method stub
        }

        @Override
        public void preSolve(Contact arg0, Manifold arg1) {
            // TODO Auto-generated method stub
        }
    });
Run Code Online (Sandbox Code Playgroud)

beginContact()每当任何身体重叠或触摸另一个身体时,该方法将始终调用.您还可以按contact对象获取有关身体的信息, contact.getFixtureA().getBody().getUserData();如果您想要对它们执行某些操作.当它们彼此分离时,EndContact()将调用方法.

希望这可以帮助.