#libgdx #tiled
#libgdx #tiled
Вопрос:
Пожалуйста, объясните мне, где я ошибаюсь. Вот мой код. Я пытался загрузить уровень, который я разработал в tile, в LibGDX, но столкнулся с
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load dependencies of asset: level_1_better.tmx
Вот мой TileTest.java файл
package com.mygdx.game.mytile;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.maps.MapProperties;
import com.badlogic.gdx.maps.tiled.TiledMap;
import com.badlogic.gdx.maps.tiled.TiledMapRenderer;
import com.badlogic.gdx.maps.tiled.TmxMapLoader;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;
public class TileTest extends ApplicationAdapter {
private TiledMap map;
private TiledMapRenderer renderer;
private OrthographicCamera camera;
private AssetManager manager;
private Integer tileWidth;
private Integer tileHeight;
private Integer mapWidthInTiles;
private Integer mapHeightInTiles;
private int mapWidthInPixels;
private int mapHeightInPixels;
@Override
public void create () {
manager = new AssetManager();
manager.setLoader(TiledMap.class, new TmxMapLoader());
manager.load("level_1_better.tmx", TiledMap.class);
manager.finishLoading();
map = manager.get("level_1_better.tmx", TiledMap.class);
MapProperties properties = map.getProperties();
tileWidth = properties.get("tilewidth", Integer.class);
tileHeight = properties.get("tileheight", Integer.class);
mapWidthInTiles = properties.get("width", Integer.class);
mapHeightInTiles = properties.get("height", Integer.class);
mapWidthInPixels = mapWidthInTiles * tileWidth;
mapHeightInPixels = mapHeightInTiles * tileHeight;
camera = new OrthographicCamera(320.f, 180.f);
camera.position.x = mapWidthInPixels * .5f;
camera.position.y = mapHeightInPixels * .35f;
renderer = new OrthogonalTiledMapRenderer(map);
}
@Override
public void render () {
Gdx.gl.glClearColor(.5f, .7f, .9f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
renderer.setView(camera);
renderer.render();
}
@Override
public void dispose () {
manager.dispose();
}
}
Мой файл level_1_better.tmx находится в корневом каталоге папки assets. А hyptosis_tile-art-batch-1.png — это лист спрайтов, на который он ссылается для создания уровня плитки.
Ответ №1:
Это потому, что не удается найти что-либо, на что ссылается ваш level_1_better.tmx
файл.
Это может быть, например, набор листов и / или изображения, составляющие набор листов. Если вы откроете .tmx-файл, вы увидите, что он ссылается на другие файлы, вы можете увидеть строку, похожую на эту:
<tileset firstgid="1" source="terrain.tsx"/>
Если terrain.tsx
файл не может быть найден AssetManager
, вы получаете сообщение об ошибке, которое вы видите.
Если вы откроете файл .tsx, в нем могут содержаться ссылки на файлы изображений, например, такие:
<image source="terrain.png" width="396" height="198"/>
Этот файл изображения также должен быть доступен для AssetManager
.
При использовании Tiled для создания файлов .tmx ссылки на ресурсы будут иметь относительные пути, вам необходимо убедиться, что они структурированы и правильно размещены в assets
папке.
Комментарии:
1. Спасибо, чувак, оказывается, у меня не было level_1_better.tsx в той же папке, что и файл tmx. После того, как я добавил его туда, все получилось