【发布时间】:2013-12-02 12:25:41
【问题描述】:
我正在努力通过平铺地图实现碰撞检测系统。我有一个渲染了平铺地图的 2d“口袋妖怪风格”游戏。具体来说,我的平铺地图 .tmx 文件中有一个“碰撞”层,我想与玩家和其他实体进行交互。我的问题是如何将玩家精灵(扩展 Sprite 类)连接到平铺地图的“碰撞”层并导致两者之间发生碰撞。任何建议表示赞赏。
【问题讨论】:
标签: java libgdx collision-detection
我正在努力通过平铺地图实现碰撞检测系统。我有一个渲染了平铺地图的 2d“口袋妖怪风格”游戏。具体来说,我的平铺地图 .tmx 文件中有一个“碰撞”层,我想与玩家和其他实体进行交互。我的问题是如何将玩家精灵(扩展 Sprite 类)连接到平铺地图的“碰撞”层并导致两者之间发生碰撞。任何建议表示赞赏。
【问题讨论】:
标签: java libgdx collision-detection
首先,您的Player 可能不应该是extend Sprite,因为您的播放器通常不仅仅是Sprite。它可能由几个精灵甚至Animations 组成。将精灵作为玩家的属性。
这个问题本身已经讨论过好几次了。您通常需要以下步骤:
在代码中可能有点像这样:
int objectLayerId = 5;
TiledMapTileLayer collisionObjectLayer = (TiledMapTileLayer)map.getLayers().get(objectLayerId);
MapObjects objects = collisionObjectLayer.getObjects();
// there are several other types, Rectangle is probably the most common one
for (RectangleMapObject rectangleObject : objects.getByType(RectangleMapObject.class)) {
Rectangle rectangle = rectangleObject.getRectangle();
if (Intersector.overlaps(rectangle, player.getRectangle()) {
// collision happened
}
}
更多您可能感兴趣的链接:
【讨论】: