2016-10-07 15 views
1

私は画面にテキストを描くのに問題があり、ビューポートのサイズによっては座標を計算していてもテキストが表示から外れることがあります。スクリーンの中心。ここでは、コードがだ、デフォルトでlibgdxgeneratorによって作成されたとしてもわずかに変更したプロジェクトです。私の知る限り理解しlibGDXフォントがビューポートから引き出されています

package net.iberdroid.libgdxtestfonts; 

import com.badlogic.gdx.ApplicationAdapter; 
import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.graphics.Color; 
import com.badlogic.gdx.graphics.GL20; 
import com.badlogic.gdx.graphics.OrthographicCamera; 
import com.badlogic.gdx.graphics.Texture; 
import com.badlogic.gdx.graphics.g2d.BitmapFont; 
import com.badlogic.gdx.graphics.g2d.SpriteBatch; 
import com.badlogic.gdx.utils.viewport.FitViewport; 
import com.badlogic.gdx.utils.viewport.Viewport; 

public class LibGdxTestFonts extends ApplicationAdapter { 
    SpriteBatch batch; 
    Texture img; 
    BitmapFont defaultFont; 
    private OrthographicCamera camera; 
    private Viewport viewport; 
    private float textY; 
    private float textX; 

    @Override 
    public void create() { 
     camera = new OrthographicCamera(); 
     viewport = new FitViewport(
       640, 
       480, 
       camera); 
     camera.setToOrtho(false); 
     batch = new SpriteBatch(); 
     img = new Texture("badlogic.jpg"); 
     defaultFont = new BitmapFont(); 
     textX = viewport.getWorldWidth()/2; 
     textY = viewport.getWorldHeight()/2; 
    } 

    @Override 
    public void render() { 
     Gdx.gl.glClearColor(0, 0, 0, 1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     batch.begin(); 
     batch.setProjectionMatrix(camera.combined); 
     defaultFont.setColor(Color.WHITE); 
     Gdx.app.log("render", String.format("TextX: %f TextY: %f", textX, textY)); 
     defaultFont.draw(batch, "HELLO WORLD!", textX, textY); 
     batch.end(); 
    } 

    @Override 
    public void dispose() { 
     batch.dispose(); 
     img.dispose(); 
    } 
} 

、こんにちは、世界を描くべきです!テキストは画面中央から始まります。そして実際には、そのビューポートのサイズでそれを行います。さて、大きなビューポートを試してみると、800x600と言うと、テキストは右と上に移動し、高い値でも試してみると、テキストが画面の境界から出てくるポイントになります右上隅。

反対方向にも同じことが起こります。小さめのビューポートを試してみると、中心から遠く、左下にいくほどテキストが表示され、最終的に境界線から外れるようになります。

私はここで何かを理解していないか、またはBitMap.drawメソッドがビューポートのサイズを無視していると思われる他のものを使用しているようです。

他の人がそれを行う場合は、私に知らせてください。

ありがとうございます!

P.S.私はHieroでフォントを生成してみたこともあり、同じ問題がありました。

+0

これはfitviewportと関係があるとします。レンダリングでのログ関数の出力は? –

+0

これは幅の半分と高さの半分なので、ビューポートサイズが640x480の場合は320,240、800x600の場合は400x300などとなります。 –

答えて

0

これを追加すると位置の問題が解決するようですが、まだスケールに問題はありますが、それは別の問題です。

@Override public void resize (int width, int height) { 
    viewport.update(width, height, true); 
} 
関連する問題