Masalah menggambar Tekstur pada TileMap di java

Saya mempunyai masalah dalam menggambar gambar (Tekstur) pada TiledMap. Ketika saya mencoba memanggil batch.draw(mytexture,x,y) satu-satunya gambar yang ditampilkan adalah peta di bawah; Saya mencoba mencari di web solusi yang layak, tetapi saya belum menyelesaikan masalahnya..

i

Ini kode saya

public class GameTest implements ApplicationListener{
private Player player;

private Batch batch;
private MyTexture texture;
private OrthographicCamera camera;
private OrthogonalTiledMapRenderer renderer;
private TiledMap map;

public GameTest() {

//init camera and player
}
@Override
public void create() {      
    background = new Background();
    batch = new SpriteBatch();
    texture = new MyTexture();

    map = new TmxMapLoader().load(Asset.FIRST_LEVEL);
    renderer = new OrthogonalTiledMapRenderer(map);
    camera.setToOrtho(false, 1280,512);
    renderer.setView(camera);
    camera.update();
}
@Override
public void render() {

    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    background.update(Gdx.graphics.getDeltaTime());
    batch.begin();

    if(Gdx.input.isKeyJustPressed(Input.Keys.RIGHT)){
        game.movePlayer('r', 1);
        camera.position.x += 5;
    }
    camera.update();        
    renderer.setView(camera);
    renderer.render();

//      batch.setProjectionMatrix(camera.combined);
    batch.draw(texture.getTexture("100"), (player.getPosition().y) * 64, ((7 
 - player.getPosition().x) * 64));
    batch.end();
}

}

Inilah kelas MyTexture. Saya membuat peta di mana saya meletakkan String sebagai kunci dan Tekstur yang sesuai dengan gambar yang ingin saya tampilkan

public MyTexture() {

    ....
        map.put("100",new Texture(Gdx.files.internal(Asset.PLAYER)));

}   
public static final Texture getTexture(String key){
    return map.get(key);
}

Dan di sini kelas Aset saya, tempat saya hanya membuat bidang statis untuk jalur gambar Aset kelas publik {

public static Map<String, String> map = new HashMap<String,String>();

public static final String FIRST_LEVEL = "levels/firstLevel.tmx";
public static String BACKGROUND = "asset/Background.png";
public static String PLAYER = "asset/Player.png";
...

}

person Frank    schedule 26.11.2017    source sumber


Jawaban (1)


Apakah Anda ingin menggambar dengan skala satuan 1,0? Saat memanggil konstruktor OrthogonalTiledMapRenderer yang hanya menggunakan TmxTileMap sebagai parameter, skala unit ditetapkan secara default ke 1.0. Artinya, satu petak menempati unit dunia yang sama banyaknya dengan jumlah piksel dalam satu petak.

Coba panggil dengan 1.0f / your_tile_size_in_pixels. Jadi, jika ubin untuk peta Anda berukuran 64 kali 64 piksel, ubahlah

renderer = new OrthogonalTiledMapRenderer(map);

to

renderer = new OrthogonalTiledMapRenderer(map, 1.0f / 64.0f);
person bornander    schedule 26.11.2017
comment
Saya baru saja mencoba menambahkannya, tetapi tidak ada yang berhasil.. Ini hanya menampilkan peta ubin tanpa pemain di posisi (x,y) - person Frank; 26.11.2017