簡體   English   中英

利用TiledMap進行Libgdx碰撞檢測

[英]Libgdx Collision Detection with TiledMap

我正在努力通過平鋪地圖實現碰撞檢測系統。 我有一個2D的“口袋妖怪風格”游戲,有一個平鋪的地圖呈現。 具體來說,我的平鋪地圖.tmx文件中有一個“碰撞”圖層,我希望與播放器和其他實體進行交互。 我的問題是如何將播放器精靈(擴展Sprite類)連接到平鋪貼圖的“碰撞”圖層並導致兩者之間發生碰撞。 任何建議表示贊賞。

首先,你的Player可能不應該extend Sprite ,因為你的玩家通常不僅僅是一個Sprite 它可能包括幾個精靈甚至Animations 保持精靈作為玩家的財產。

這個問題本身已經多次得到了解決。 您通常需要以下步驟:

  1. 在地圖中找到碰撞圖層
  2. 從該圖層中提取所有對象
  3. 檢查每個對象是否發生碰撞

在代碼中,這可能看起來像這樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM