我有一个游戏,其中玩家必须跳过漂浮在水中的物体。我用box2D实现了所有游戏对象,现在我需要控制它们之间的碰撞。我有一个WorldController类,它实例化所有对象和浮力控制器,我也有一个自定义ContactListener,但因为我有多种接触可能性(玩家脚传感器与其他物体接触,与水接触的物体等)我正在寻找一种组织所有代码的好方法。
你们如何控制所有碰撞?你用过滤器吗?您是否使用侦听器接口来通知演员?
答案 0 :(得分:1)
处理碰撞时,您可能会将Actors / Objects包装成GameObject类或类似GameObjectType
的类。通过这种方式,您可以定义不同的对象,如播放器,水,地面,浮动等......
在ContactListener中,您可以通过引用该类型进行检查。要将灯具和实体链接到Actors,只需使用setUserData()方法。
然后在ContactListener中,您可以检查beginContact()方法,例如,如果FixtureA背后的Object类型为" Player" FixtureB背后的对象是" Water" ...作为反应,你可以让游戏结束,因为玩家正在溺水或者你想要的任何东西。