[英]AndEngine change TMX Tiled Map Dynamically
我已經閱讀了該問題的所有可能重復內容,但沒有一個給我完整的解決方案(解決方案分為答案),因此我決定嘗試解決問題。 BTW StackOverflow告訴我:
不是您要找的答案? 瀏覽標記為android andengine tmx的其他問題,或詢問您自己的問題。
和
可以提問並回答自己的問題
因此,如果您想公開記錄它,以便其他人(包括您自己)以后可以找到它。
現在已經很清楚了,我想動態更改TMX映射。 例如,地圖有一個胸部對象。 玩家在上面行走並獲得金牌。 然后,我想從地圖上刪除箱子,以使玩家不能一次以上收集箱子。 我該怎么做呢?
可以從地圖上移除箱子,使其無法再被收集,但是不能通過編輯TMX地圖來進行。 要做到這一點,每當玩家經過一個箱子時(通過在箱子上添加一個屬性,例如Chest = true然后檢查它),除了獎勵玩家之外,您還必須做一些事情,並且使用共享的偏好來保存該箱子擁有的東西通過字符串集(例如,使用鍵“ chests”)使用並包含以“:”分隔的坐標。 保存坐標:
String saveMe = tileRow + ":" + tileColumn;
removeChest(tileRow, tileColumn);
加載坐標:
String loaded = loadString();
String[] coords = loades.split(":");
tileRow = Integer.parseInt(coords[0]);
tileColumn = Integer.parseInt(coords[1]);
removeChest(tileRow, tileColumn);
現在您可以保存/加載用過的箱子。 每當玩家走過具有(chest = true)屬性的圖塊時:
boolean found = false;
for (int i = 0; i < chestsUsedTileRowsArray.length; i++) {
if (chestFoundTileRow == chestsUsedTileRowsArray[i] && chestFoundTileColumn == chestsUsedTileColumnsArray[i]) {
found = true;
break;
}
}
if (!found) {
rewardPlayer();
saveChestUsed(tileRow, tileColumn);
}
最后,有一個removeChest()
,它需要一些技巧:繪制一個在胸部具有地面紋理的精靈:
void removeChest(int tileRow, int tileColumn) {
final TMXTile tileToReplace = tmxMap.getTMXLayers().get(0).getTMXTile(tileColumn, tileRow);
final int w = tileToReplace.getTileWidth();
final int h = tileToReplace.getTileHeight();
Sprite sprite = new Sprite(w * (tileColumn + 0.5), h * (tileRow + 0.5), textureRegionOfGround, this.getVertexBufferObjectManager());
scene.addChild(sprite);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.