Arrays 如何使冲突与平铺中的userData一起工作?(LigGDX)

Arrays 如何使冲突与平铺中的userData一起工作?(LigGDX),arrays,libgdx,tiled,Arrays,Libgdx,Tiled,目前,我正试图找出如何使用libgdx和tiled进行碰撞检测。我收集阵列中平铺的所有尸体 这是我从平铺中提取实体并将其存储在数组中的代码: 公共静态数组ParseTileObjectLayer(世界世界、MapObjects MapObjects、int layerValue){ 开关(层值){ 案例0: 阵列接地体=新阵列(); 用于(MapObject MapObject:mapObjects){ 形状; if(多段线mapObject的mapObject实例){ 形状=createPol

目前,我正试图找出如何使用libgdx和tiled进行碰撞检测。我收集阵列中平铺的所有尸体

这是我从平铺中提取实体并将其存储在数组中的代码:

公共静态数组ParseTileObjectLayer(世界世界、MapObjects MapObjects、int layerValue){
开关(层值){
案例0:
阵列接地体=新阵列();
用于(MapObject MapObject:mapObjects){
形状;
if(多段线mapObject的mapObject实例){
形状=createPolyline((PolylineMapObject)mapObject);
}else if(矩形mapObject的mapObject实例){
shape=createRectangle((RectangleMapObject)mapObject);
}else if(PolygonMapObject的mapObject实例){
形状=createPolygon((PolygonMapObject)mapObject);
}否则{
继续;
}
身体;
BodyDef BodyDef=新的BodyDef();
bodyDef.type=bodyDef.BodyType.StaticBody;
body=world.createBody(bodyDef);
body.createFixture(形状,0);
地面实体。添加(实体);
shape.dispose();
}
返回地面机构;
案例1:
数组objectbody=新数组();
用于(MapObject MapObject:mapObjects){
形状;
if(多段线mapObject的mapObject实例){
形状=createPolyline((PolylineMapObject)mapObject);
}else if(矩形mapObject的mapObject实例){
shape=createRectangle((RectangleMapObject)mapObject);
}else if(PolygonMapObject的mapObject实例){
形状=createPolygon((PolygonMapObject)mapObject);
}否则{
继续;
}
身体;
BodyDef BodyDef=新的BodyDef();
bodyDef.type=bodyDef.BodyType.StaticBody;
body=world.createBody(bodyDef);
FixtureDef FixtureDef=新的FixtureDef();
fixtureDef.shape=形状;
body.createFixture(形状,0);
objectbody.add(body);
shape.dispose();
}
返回实体;
default://如果default返回null,我们就不必在开关循环之外返回null,如果我们返回一些东西
//在switch语句中,我们不使用break语句;
返回null;
}
}
现在在另一个类中,我返回静态数组以从中收集信息,在另一个类中,我还实现了ContactListener

在此变量中,我检索上述静态数组:

private Array objectbody=MapLoader.parseTiledObjectLayer(world,map.getLayers().get(1.getObjects(),1);
get1.setUserData(“对象”);
在这里,我还尝试为冲突分配一个UserData

现在,我尝试检查是否存在碰撞:

@覆盖
public void beginContact(联系人){
夹具本体1;
夹具本体2;
如果(联系.getFixtureA().getUserData()=“玩家”){
body1=contact.getFixtureA();
body2=contact.getFixtureB();
}否则{
body1=contact.getFixtureB();
body2=contact.getFixtureA();
}
if(body1.getUserData()=“Player”&&body2.getUserData()=“Object”){
System.out.println(“冲突”);
}
}

一切似乎都很好,但由于某种原因,当玩家和物体发生碰撞时,似乎什么都没有发生。在静态方法中设置userdata时,我没有这个错误。请提供任何帮助。

解决了这个问题,与创建数组的方法相同,您还需要创建一个数组来分配用户数据。出于某些原因,body.setUserData至少对我不起作用。那么为什么不回答您自己的问题呢?:-)是的,以防其他人有这个问题,也许这对他们会有用。(未来)