【问题标题】:Problems drawing a Texture on a TileMap in java在 Java 中的 TileMap 上绘制纹理的问题
【发布时间】:2018-05-10 00:39:41
【问题描述】:

我无法在 TiledMap 上绘制图像 ( Texture )。当我尝试调用 batch.draw(mytexture,x,y) 时,唯一显示的图像是下面的地图;我试图在网上搜索一个可行的解决方案,但我还没有解决这个问题..

这是我的代码

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

}

这是 MyTexture 类。我创建了一个地图,其中我将一个字符串作为键和一个与我要显示的图像相对应的纹理

public MyTexture() {

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

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

这里是我的 Asset 类,我只为 imgaes 路径创建静态字段 公共类资产 {

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

}

【问题讨论】:

    标签: java libgdx graphics2d 2d-games


    【解决方案1】:

    您是否使用 unit-scale 1.0 进行绘制? 当调用OrthogonalTiledMapRenderer 的构造函数时,它只接受TmxTileMap 作为参数,单位比例默认为1.0。 这意味着单个图块占用的世界单位与图块中的像素一样多。

    尝试使用1.0f / your_tile_size_in_pixels 调用它。 因此,如果您的地图的图块是 64 x 64 像素的变化

    renderer = new OrthogonalTiledMapRenderer(map);
    

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

    【讨论】:

    • 我刚刚尝试添加,但没有任何效果..它只显示没有玩家在位置(x,y)的平铺地图
    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2011-04-20
    • 2014-11-25
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 2018-08-19
    相关资源
    最近更新 更多