2017-02-09 3 views
1

Я разрабатываю игру libgdx. Я хочу создать экран, где некоторые квадраты «падают» сверху вниз. Итак:
1. Мне нужно установить фоновое изображение.
2. Я должен сгенерировать некоторые квадраты случайным образом.
3. Мне нужно переместить экран снизу вверх.Автоматическая прокрутка камеры Libgdx

Чтобы получить, что я использую Sprite для фона, много спрайтов для квадратов. Затем камеру для перемещения экрана.

В методе визуализации у меня есть:

@Override 
    public void render(float delta) { 
     Gdx.gl.glClearColor(0, 0, 0, 0); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     Gdx.input.setInputProcessor(stage); 

     batch.begin(); 

     backgroundSprite.draw(batch); 

     for(Square square : squareList) { 
      //Gdx.app.log("[Match]", square.toString()); 
      square.updatePosition(); 
      square.setSize(20, 20); 
      square.draw(batch); 
     } 
     batch.end(); 
     batch.setProjectionMatrix(fixedCamera.view); 

     fixedCamera.position.y +=1; 
     System.out.println("Camera position: x:" +fixedCamera.position.x+" y:"+fixedCamera.position.y); 
     fixedCamera.update(); 
     stage.act(Gdx.graphics.getDeltaTime()); 
     stage.draw(); 
    } 

Это код на конструкторе. Это все, что я в классе

final static int WIDTH = Gdx.app.getGraphics().getWidth(); 
final static int HEIGHT = Gdx.app.getGraphics().getHeight(); 
skin = new Skin(Gdx.files.internal("skin/flat-earth-ui.json")); 
     fixedCamera = new OrthographicCamera(WIDTH, HEIGHT); 
     stage = new Stage(new ScreenViewport()); 
     batch = new SpriteBatch(); 
     dynBatch = new SpriteBatch(); 
     backgroundSprite = new Sprite(new Texture(Gdx.files.internal(scenario.getTexturePath()))); 
     backgroundSprite.setPosition(0,0); 
     backgroundSprite.setSize(WIDTH, HEIGHT); 
     fixedCamera.position.set(0,0, 0); 
     fixedCamera.update(); 

Элементы отображаются правильно, но когда камера движется, все спрайты исчезает ... Как я могу исправить это? Есть ли способ справиться с этим более эффективно?

+0

Gdx.input.setInputProcessor (stage); использовать в методе create() или show() – Aryan

+0

Вы используете сцену в своей игре. fixedCamera отличается от камеры сцены? – Aryan

+0

Что такое видовая область вашей фиксированной камеры? – Aryan

ответ

0

Ваше требование может быть достигнуто с помощью следующих шагов:

  1. Создание Sprite, имеющий Размер экрана и сохранить его на дно.
  2. Создать квадрат в верхней части экрана со случайным горизонтальным положением и изменить положение y всего квадрата (спрайт)
  3. Не нужно перемещать камеру. держите его в середине экрана.
Смежные вопросы