Libgdx Collision Detection with TiledMap

后端 未结 1 640
感动是毒
感动是毒 2021-02-09 06:55

I\'m struggling with implementing a collision detection system through the tiledmap. I have a 2d \"pokemon style\" game that has a tiled map rendered. Specifically, I have a \

相关标签:
1条回答
  • 2021-02-09 07:13

    First of all your Player should probably not extend Sprite, because your player is usually much more than a Sprite. It probably consists of several sprites or even Animations. Keep a sprite as a property of the player.

    The question itself has already been adressed several times. You usually need the following steps:

    1. Find the collision layer in your map
    2. Extract all objects from this layer
    3. Check each of those objects for a collision

    In code this might look a bit like this:

    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
        }
    }
    

    Some more links which you might be interested in:

    • Java Tiled Map Game (LibGDX) | Episode 4 - collision detection
    • Java Tiled Map Game (LibGDX) | Episode 4 update - better collision detection implementation
    • Android Game Development with libgdx – Collision Detection, Part 4
    • SuperKoalio example game with TiledMaps and collision
    0 讨论(0)
提交回复
热议问题