Box2D如何检测触摸元素

时间:2014-09-21 17:09:31

标签: android box2d

我正在尝试使用Box2D构建游戏。

我的问题是:在每次更新引擎时,我需要检查每个元素并根据触摸元素的状态更新元素的状态。所以我真的需要一个函数来检测哪个元素正在触及哪个元素。

我该怎么做?

编辑: 例 - >我有5个盒子,box1-box2-box3互相接触,box4-box5互相接触。如果box2的状态变为蓝色,则对collusions没有任何改变,box1和box3也应该变为蓝色

1 个答案:

答案 0 :(得分:1)

您需要在类中实现ContactListener并使用它的方法:

public class CollisionListener implements ContactListener {

    @Override
    public void beginContact(Contact contact) {


    }

    @Override
    public void endContact(Contact arg0) {
        // TODO Auto-generated method stub

    }

    @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

    }

}

您可以像这样设置监听器

world.setContactListener(new CollisionListener());

每次调用两个项目,beginContact(联系人联系人)时,您将在Contact对象中获取有关哪两个项目发生冲突的信息。您可以像这样访问它们

if ( contact.getfixtureA.getBody().getUserData() == "element1" &&
    contact.getfixtureB.getBody().getUserData()=="element2" ){
    Colliding = true;
}