我正在尝试使用Box2D构建一个游戏。
我的问题是:在每次更新引擎时,我需要检查每个元素,并根据触摸元素的状态更新元素的状态。所以我真的需要一个函数来检测哪个元素在接触哪个元素。
我怎么能这么做?
编辑:示例->我有5个盒子,盒子1-盒2-盒3互相接触,盒4-盒5互相接触。如果box2的状态变为蓝色,那么box1和box3也应该变成蓝色。
发布于 2014-09-21 17:56:52
您需要在类中实现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(联系人联系人)将被调用,您将在联系人对象中获得关于哪两个项目正在碰撞的信息。你可以这样访问它们
if ( contact.getfixtureA.getBody().getUserData() == "element1" &&
contact.getfixtureB.getBody().getUserData()=="element2" ){
Colliding = true;
}https://stackoverflow.com/questions/25961730
复制相似问题