我正在努力通过平铺地图实施碰撞检测系统。我有一个2D的“口袋妖怪风格”游戏,有一个平铺的地图呈现。具体来说,我的平铺地图.tmx文件中有一个“碰撞”图层,我希望与播放器和其他实体进行交互。我的问题是如何将播放器精灵(扩展Sprite类)连接到平铺贴图的“碰撞”图层并导致两者之间发生碰撞。任何建议都表示赞赏。
答案 0 :(得分:12)
首先,您的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
}
}
您可能感兴趣的更多链接: