Java Libgdx:使用tilemap绘制纹理

Java Libgdx:使用tilemap绘制纹理,java,libgdx,Java,Libgdx,我有一个非常简单的问题。但我无法解决。我只想在瓷砖贴图上画一个纹理。这些代码我可以看到地图和移动,但我看不到纹理 屏幕如下: package com.adsiz.areyoualive.screen; import com.adsiz.areyoualive.game.Player; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.InputProcessor; i

我有一个非常简单的问题。但我无法解决。我只想在瓷砖贴图上画一个纹理。这些代码我可以看到地图和移动,但我看不到纹理

屏幕如下:

package com.adsiz.areyoualive.screen;

import com.adsiz.areyoualive.game.Player;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.maps.tiled.*;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;

public class PlayScreen implements Screen, InputProcessor{
    public ScreenManager screenManager;
    public static float speed = 32;

    //tilemap & camera
    TiledMap tiledMap;
    OrthographicCamera camera;
    TiledMapRenderer renderer;
    //player
    Player player;
    //spritebatch
    SpriteBatch spriteBatch;

    public PlayScreen(){
        float w = Gdx.graphics.getWidth();
        float h = Gdx.graphics.getHeight();

        camera = new OrthographicCamera();
        camera.setToOrtho(false, w, h);
        camera.update();

        tiledMap = new TmxMapLoader().load("map/untitled.tmx");
        renderer = new OrthogonalTiledMapRenderer(tiledMap);

        spriteBatch = new SpriteBatch();

        camera.position.set(0, 3200, 0);

        Gdx.input.setInputProcessor(this);
        player = new Player(0, 3200);
        spriteBatch.setTransformMatrix(camera.combined);
    }

    @Override
    public void render(float delta) {
        Gdx.graphics.getGL20().glClearColor( 1, 1, 1, 1 );
        Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
        Gdx.graphics.getGL20().glClear( GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT );

        camera.update();
        renderer.setView(camera);
        renderer.render();

        spriteBatch.setProjectionMatrix(camera.combined);

        spriteBatch.begin();
        player.draw(spriteBatch);
        spriteBatch.end();
    }

    @Override
    public void resize(int width, int height) {
        // TODO Auto-generated method stub

    }

    @Override
    public void show() {
        // TODO Auto-generated method stub

    }

    @Override
    public void hide() {
        // TODO Auto-generated method stub

    }

    @Override
    public void pause() {
        // TODO Auto-generated method stub

    }

    @Override
    public void resume() {
        // TODO Auto-generated method stub

    }

    @Override
    public void dispose() {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean keyDown(int keycode) {
        switch (keycode) {
        case Keys.DOWN:
            camera.translate(0, -1*speed);
            player.moveDown();
            break;
        case Keys.UP:
            camera.translate(0, speed);
            player.moveUp();
            break;
        case Keys.LEFT:
            camera.translate(-1*speed, 0);
            player.moveLeft();
            break;
        case Keys.RIGHT:
            camera.translate(speed, 0);
            player.moveRight();
            break;
        }
        return false;
    }

    @Override
    public boolean keyUp(int keycode) {

        return false;
    }

    @Override
    public boolean keyTyped(char character) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean touchUp(int screenX, int screenY, int pointer, int button) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean touchDragged(int screenX, int screenY, int pointer) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean mouseMoved(int screenX, int screenY) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean scrolled(int amount) {
        // TODO Auto-generated method stub
        return false;
    }

}
这是我的player.draw函数:

public void draw(SpriteBatch batch){
        batch.draw(playerTexture, getPosX(), getPosY(), playerTexture.getWidth(), playerTexture.getHeight());
    }
我只想显示一个简单的纹理并在屏幕上移动它。上面怎么了?你能帮我吗


大家好

我解决了自己的问题,我只是将贴图渲染器更改为正交TilePrenderer,并使用一批正交TilePrenderer更改了SpriteBatch

package com.adsiz.areyoualive.screen;

import com.adsiz.areyoualive.game.Player;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.maps.tiled.*;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;

public class PlayScreen implements Screen, InputProcessor{
    public ScreenManager screenManager;
    public static float speed = 32;

    //tilemap & camera
    TiledMap tiledMap;
    OrthographicCamera camera;
    OrthogonalTiledMapRenderer renderer;
    //player
    Player player;

    public PlayScreen(){
        float w = Gdx.graphics.getWidth();
        float h = Gdx.graphics.getHeight();

        camera = new OrthographicCamera();
        camera.setToOrtho(false, w, h);
        camera.update();

        tiledMap = new TmxMapLoader().load("map/untitled.tmx");
        renderer = new OrthogonalTiledMapRenderer(tiledMap);

        camera.position.set(0, 3200, 0);

        Gdx.input.setInputProcessor(this);
        player = new Player(0, 3200);
    }

    @Override
    public void render(float delta) {
        Gdx.graphics.getGL20().glClearColor( 1, 1, 1, 1 );
        Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
        Gdx.graphics.getGL20().glClear( GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT );

        camera.update();
        renderer.setView(camera);
        renderer.render();

        renderer.getSpriteBatch().begin();
        player.draw(renderer.getSpriteBatch());
        renderer.getSpriteBatch().end();

    }