2016-10-27 6 views
-1

Привет Я новичок в LibGDX. У меня есть движущаяся камера, и я хочу отображать результат, пока камера движется. Я сделал это, но текст (оценка) дрожат, когда камера перемещается. Я понятия не имею, как это исправить. Вот мой код.Перемещение BitmapFont с камерой LibGDX

public void render(SpriteBatch sb) { 
    sb.setProjectionMatrix(cam.combined); 
    sb.begin(); 
    String s = Integer.toString(SCORE); 
    String h = Integer.toString(highscore); 

    sb.draw(bg,cam.position.x - (cam.viewportWidth /2),0); 


    sb.draw(groud,groundpos1.x,groundpos1.y); 
    sb.draw(groud,groundpos2.x,groundpos2.y); 


    font.draw(sb,s,cam.position.x-font.getSpaceWidth(),cam.position.y+(cam.viewportHeight /2)-39); 
    high.draw(sb,h,cam.position.x- (cam.viewportWidth /2),cam.position.y+(cam.viewportHeight /2)-39); 
    sb.end(); 
} 

ответ

0

Причина, по которой она дрожит, заключается в том, что по умолчанию позиции текста округлены до целых позиций. Вы можете установить font.setUseIntegerPositions(false) на каждый из ваших текстовых объектов, чтобы этого избежать.

Однако нецелесообразно пытаться перемещать ваш графический интерфейс с помощью камеры вашего игрового мира. Создайте отдельную камеру для своего графического интерфейса.

public void render(SpriteBatch sb) { 
    sb.setProjectionMatrix(gameCam.combined); 
    sb.begin(); 

    sb.draw(bg,gameCam.position.x - (gameCam.viewportWidth /2),0); 

    sb.draw(groud,groundpos1.x,groundpos1.y); 
    sb.draw(groud,groundpos2.x,groundpos2.y); 


    sb.setProjectionMatrix(guiCam.combined); 
    String s = Integer.toString(SCORE); 
    String h = Integer.toString(highscore); 
    font.draw(sb, s, font.getSpaceWidth(), guiCam.viewportHeight/2 - 39); 
    high.draw(sb, h, guiCam.viewportWidth /2, guiCam.viewportHeight/2 - 39); 
    sb.end(); 
} 
Смежные вопросы