2017-11-26 5 views
0

Ich habe Probleme, ein Bild (Textur) auf einer TiledMap zu zeichnen. Wenn ich versuche, batch.draw (mytexture, x, y) aufzurufen, wird nur die folgende Karte angezeigt. Ich habe versucht, auf Bahn eine machbare Lösung zu suchen, aber ich habe nicht das Problem gelöst noch ..Probleme beim Zeichnen einer Textur auf einer TileMap in Java

i

Hier ist mein Code

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(); 
} 

} 

Hier MyTexture Klasse. Ich erstelle eine Karte, wo ich einen String als Schlüssel setzen und eine Textur auf dem Bild entspricht I

public MyTexture() { 

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

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

Und hier meine Anlageklasse angezeigt werden soll, wo ich für imgaes Weg public class Nutzungsart nur statisches Feld erstellen {

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"; 
... 

} 

Antwort

0

Sind Sie verwenden Sie mit einer Einheit angelegten von 1,0 ziehen? Beim Aufrufen des Konstruktors OrthogonalTiledMapRenderer, der nur einen TmxTileMap als Parameter verwendet, wird die Einheitenskala standardmäßig auf 1.0 gesetzt. Das bedeutet, dass eine einzelne Kachel so viele Welteinheiten einnimmt wie Pixel in einer Kachel.

Versuchen Sie es mit 1.0f/your_tile_size_in_pixels aufrufen. Also, wenn die Fliesen für die Karte 64 von 64 Pixel

renderer = new OrthogonalTiledMapRenderer(map); 

zu

renderer = new OrthogonalTiledMapRenderer(map, 1.0f/64.0f); 
+0

Ich habe das gerade versucht, hinzuzufügen, zu ändern, aber nichts works..It zeigen nur die geflieste Karte ohne Spieler an Position (x, y) – Frank

Verwandte Themen