在LibGDX中实现Box2D冲突的清洁方式

时间:2014-03-21 13:43:08

标签: java libgdx box2d

我有一个游戏,其中玩家必须跳过漂浮在水中的物体。我用box2D实现了所有游戏对象,现在我需要控制它们之间的碰撞。我有一个WorldController类,它实例化所有对象和浮力控制器,我也有一个自定义ContactListener,但因为我有多种接触可能性(玩家脚传感器与其他物体接触,与水接触的物体等)我正在寻找一种组织所有代码的好方法。

你们如何控制所有碰撞?你用过滤器吗?您是否使用侦听器接口来通知演员?

1 个答案:

答案 0 :(得分:1)

处理碰撞时,您可能会将Actors / Objects包装成GameObject类或类似GameObjectType的类。通过这种方式,您可以定义不同的对象,如播放器,水,地面,浮动等......

在ContactListener中,您可以通过引用该类型进行检查。要将灯具和实体链接到Actors,只需使用setUserData()方法。

然后在ContactListener中,您可以检查beginContact()方法,例如,如果FixtureA背后的Object类型为" Player" FixtureB背后的对象是" Water" ...作为反应,你可以让游戏结束,因为玩家正在溺水或者你想要的任何东西。