java - 在 LibGDX 中实现 Box2D 碰撞的简洁方法

标签 java libgdx box2d

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

你们如何控制所有碰撞?你使用过滤器吗?您是否使用监听器接口(interface)来通知参与者?

最佳答案

处理碰撞时,您可以将 Actor/对象包装到具有某种 GameObjectType 的 GameObject 类或类似类中。这样你就可以定义不同的对象,比如玩家、水、地面、漂浮物等......

在您的 ContactListener 中,您可以通过引用该类型进行检查。要将您的装置和主体链接到您的 Actor,只需使用 setUserData() 方法。

然后在ContactListener中你可以检查beginContact()方法,例如FixtureA后面的对象是否是“Player”类型而FixtureB后面的对象是“Water”...作为 react ,你可以让游戏结束因为玩家溺水或者任何你想要的。

关于java - 在 LibGDX 中实现 Box2D 碰撞的简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22560492/

相关文章:

java - 使用 DOM 解析 xml,DOCTYPE 被删除

android - 如何使用 libgdx 创建 Android UI 元素

java - LibGDX Sprite + Box2D CircleShape : Positioning while taking into account origin

java - 在 Java 中导入对象 (Eclipse)

java - 搜索前 3 个数字的最快和最有效的方法?

java - 如何以 IPO 格式放置代码?

android - 在 libgdx 中管理桌面和设备版本之间的 Assets

java - NullPointerExceptions 仅在某些 Samsung Galaxy 设备上出现?

java - Android Studio (Intellij) 编译错误

javascript - 防止 matterjs 主体逃离预定义区域