我正在尝试在LibGDX中的等轴测图贴图上渲染测试精灵。我的图块是64px x 32px。我正在尝试在图块的中心渲染一个精灵。
尽管遵循此处找到的等距数学教程:Isometric Math,但我似乎找不到正确设置的测试精灵的位置。
例如,我希望将灰色框放在图块0,0上,但我得到的是这个结果:
以下是我用来计算正确的精灵位置(对应于给定的图块)的函数
public int tileToScreenX(int x, int y) {
return (x - y) * 32;
}
public int tileToScreenY(int x, int y) {
return (x + y) * 16;
}
这是其他一些相关代码:
@Override
public void create () {
// Load map from Tiled and create isometric renderer
map = new TmxMapLoader().load("Test_Map.tmx");
renderer = new IsometricTiledMapRenderer(map);
camera = new OrthographicCamera(800, 600);
// Set camera view so that tilemap is centered on the screen
TiledMapTileLayer layer0 = (TiledMapTileLayer) map.getLayers().get(0);
Vector3 center = new Vector3(layer0.getWidth() * layer0.getTileWidth() / 2f, 0, 0);
camera.position.set(center);
camera.update();
renderer.setView(camera);
// Load character spritesheet, split poses into separate textures
character = new Texture(Gdx.files.internal("Sprites/Characters/cube_sprite.png"));
TextureRegion[][] splitPoses = TextureRegion.split(character, character.getWidth() / 4, character.getHeight());
characterPoses = new TextureRegion[4];
for(int i = 0; i < 4; i++) {
characterPoses[i] = splitPoses[0][i];
}
batch = new SpriteBatch();
}
@Override
public void render () {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
renderer.render();
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(characterPoses[0],tileToScreenX(0, 0),tileToScreenY(0,0), 64, 32);
batch.end();
}
我尝试在batch.draw(characterPoses[0],tileToScreenX(0, 0),tileToScreenY(0,0), 64, 32);
行的图块0,0上绘制精灵。我不确定自己在做什么错,任何帮助都将不胜感激。