13

私は愚かなことをしたことに真剣に賭けていますが、それに気付かないようです。

package com.me.mygdxgame;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;

public class Locked implements ApplicationListener
{
    private OrthographicCamera camera;
    private SpriteBatch batch;
    private Texture texture;
    private Sprite sprite;
    private BitmapFont font;
    private CharSequence str = "Hello World!";
    private float width;
    private float height;

    @Override
    public void create()
    {
        width = Gdx.graphics.getWidth();
        height = Gdx.graphics.getHeight();

        camera = new OrthographicCamera(1, height / width);
        batch = new SpriteBatch();

        texture = new Texture(Gdx.files.internal("data/libgdx.png"));
        texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);

        TextureRegion region = new TextureRegion(texture, 0, 0, 512, 275);

        sprite = new Sprite(region);
        sprite.setSize(0.9f, 0.9f * sprite.getHeight() / sprite.getWidth());
        sprite.setOrigin(sprite.getWidth() / 2, sprite.getHeight() / 2);
        sprite.setPosition(-sprite.getWidth() / 2, -sprite.getHeight() / 2);

        font = new BitmapFont(Gdx.files.internal("data/digib.fnt"),
                Gdx.files.internal("data/digib.png"), false);
    }

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

    @Override
    public void render()
    {
        Gdx.gl.glClearColor(1, 1, 1, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

        batch.setProjectionMatrix(camera.combined);
        batch.begin();
        font.setColor(0.0f, 0.0f, 0.0f, 1.0f);

        //sprite.draw(batch);
        font.draw(batch, str, width*0.5f, height*0.5f);
        batch.end();
    }

    @Override
    public void resize(int width, int height)
    {
    }

    @Override
    public void pause()
    {
    }

    @Override
    public void resume()
    {
    }
}

プロジェクトは、 gdx-setup-ui.jarが提供するテンプレート ツールを使用して生成され ました。コードでわかるように、デフォルト コードを取り除く必要はありませんでした (LibGDX ロゴをレンダリングするためのいくつかの単純なコードを描画するだけです)。

だから、きれいに生成されたプロジェクトで、私はこのガイドをここに従った http://code.google.com/p/libgdx-users/wiki/addingText2D

最後に、上記の提供されたコードに到達します。

問題は、!@#$ing テキストが表示されないのはなぜ!? 何度も位置を変えましたが、まだうまくいきません :\

私は何か見落としてますか?

参考までに:フォントは問題ありません。別のゲームにドロップしたところ、動作しました。

4

6 に答える 6

9

次のように射影行列を変更してみてください。

Matrix4 normalProjection = new Matrix4().setToOrtho2D(0, 0, Gdx.graphics.getWidth(),  Gdx.graphics.getHeight());

batch.setProjectionMatrix(normalProjection);
于 2012-10-17T20:02:31.170 に答える
9

私がすることは

    spriteBatch = new SpriteBatch();
 font = new BitmapFont(Gdx.files.internal("data/nameOfFont.fnt"),
         Gdx.files.internal("data/nameOfFont.png"), false);

そしてrenderメソッドで

spriteBatch.begin();
 font.setColor(1.0f, 1.0f, 1.0f, 1.0f);
 font.draw(spriteBatch, "some string", 25, 160);
 spriteBatch.end();

私のブログでそれについてもっと読むことができます: http://algorhymes.wordpress.com/2012/11/17/javalibgdx-fonts/

于 2013-03-28T18:56:47.557 に答える
6

個人的には、すべてのフォントを .fnt 形式に変換することはあまり好きではありません。特定のフォントに異なるサイズが必要な場合は、すべての変換を行うために多くの時間 (およびアプリ スペース) を費やさなければなりません。

FreeType 拡張機能を使用して、.ttf から直接読み込むことができます。

FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
BitmapFont font15 = generator.generateFont(15);
BitmapFont font22 = generator.generateFont(22);
generator.dispose();

詳細はこちら

レンダリングは watis で説明されているのと同じ方法で行われます。

于 2013-11-18T09:43:09.480 に答える
3

libgdx Web サイトで提供されている hiero を使用して .fnt ファイルを作成します。

フォントのサイズを 150 に設定すると、.fnt ファイルと png ファイルが作成されます

assests フォルダーに両方のファイルをコピーします

フォントを宣言する

BitmapFont フォント。

nw in create メソッド

font = new BitmapFont(Gdx.files.internal("data/100.fnt"), false);//100 はフォント名で、フォントに任意の名前を付けることができます

レンダリング中

font.setscale(.2f);

font.draw(batch, "書きたいことは何でも", x,y);

これでスムーズに動作します

于 2013-09-24T09:15:30.363 に答える
2

コードの主な問題は、
viewportWidth = 1 &
viewportHeight = width/heightでカメラを作成したことです。

カメラの範囲外の width*0.5f & height*0.5f でフォントを描画しています

カメラの初期化を

camera = new OrthographicCamera(width, height);

.... または draw font ステートメントを次のように変更します

font.setScale(1,height/width);
font.draw(batch, str, 0.5f, height/width*0.5f);
于 2013-06-18T18:51:46.043 に答える
1

このように手動で位置を与えてみましたか。これがうまくいくことを願っています batch.setProjectionMatrix(camera.combined); batch.enableBlending(); batch.begin();
font.draw(バッチ、あなたの文字列、100,100);
バッチ.end();

于 2013-04-11T12:15:55.500 に答える