2016-03-27 2 views
1

У меня проблема с libgdx. Я хочу сделать простой пример о масштабировании, уменьшении, но орфографическая камера не делает ничего.Libgdx, OrthographicCamera не работает (увеличение, уменьшение)

Мои коды:

public class HitTheGreenBlock extends ApplicationAdapter { 

    public static int WIDTH, HEIGHT; 

    SpriteBatch batch; 
    OrthographicCamera orthographicCamera; 

    private StateManager stateManager; 

    @Override 
    public void create() { 

     WIDTH = Gdx.graphics.getWidth(); 
     HEIGHT = Gdx.graphics.getHeight(); 

     batch = new SpriteBatch(); 

     orthographicCamera = new OrthographicCamera(); 
     orthographicCamera.translate(WIDTH /20 , HEIGHT/20); 
     orthographicCamera.update(); 

     stateManager = new StateManager(); 

    } 

    @Override 
    public void render() { 
     Gdx.gl.glClearColor(1, 0.78f, 0.25f, 1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     stateManager.update(Gdx.graphics.getDeltaTime()); 
     stateManager.draw(batch); 

    } 
} 

И класс, который рисует изображение на экране:

public class PlayState extends MainState{ 

    public PlayState(StateManager stateManager){ 
     super(stateManager); 
    } 

    private int width,height; 

    public void init() { 
     width = 2 * HitTheGreenBlock.WIDTH/3; 
     height = width; 
     ImageLoader.load(); 

    } 
    public void update(float dt) { 


    } 
    public void draw(SpriteBatch spriteBatch) { 

     spriteBatch.begin(); 

     spriteBatch.draw(ImageLoader.greenRegion, (Gdx.graphics.getWidth() - width)/2, Gdx.graphics.getHeight()/5, width, height); 

     spriteBatch.end(); 

    } 
    public void handleInput() { 

    } 
    public void dispose() { 

    } 
} 

Я посылаю SpriteBatch от HitTheGreenBlock.class к PlayState.class.

Я изменил эту строку:

 orthographicCamera.translate(WIDTH , HEIGHT); 

этой линии:

 orthographicCamera.translate(WIDTH /20 , HEIGHT/20); 

Но orthographicCamera делать ничего и изображения размер не меняется.

В чем проблема с моим кодом?

* У меня есть еще 3 класса, если это необходимо, я могу добавить их тоже.

ответ

1

Вы пробовали установить матрицу проекции на camera.combined на вашем spriteBatch? Перед тем, как spriteBatch.begin, положите spriteBatch.setProjectionMatrix(camera.combined);

Выполнение этого сканирует spriteBatch для рендеринга относительно вашей камеры.

+0

Я добавил эту строку, но на этот раз ничего не отображается на экране, кроме цвета фона. –

+0

Я использовал setOrtho(); и решена проблема. –

+0

Хорошо. Обязательно всегда устанавливайте матрицу проекции всякий раз, когда вы рисуете вещи. Очень важно. – Wyatt