[英]Libgdx Collision Detection with TiledMap
我正在努力通过平铺地图实现碰撞检测系统。 我有一个2D的“口袋妖怪风格”游戏,有一个平铺的地图呈现。 具体来说,我的平铺地图.tmx文件中有一个“碰撞”图层,我希望与播放器和其他实体进行交互。 我的问题是如何将播放器精灵(扩展Sprite类)连接到平铺贴图的“碰撞”图层并导致两者之间发生碰撞。 任何建议表示赞赏。
首先,你的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
}
}
您可能感兴趣的更多链接:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.