2

テキストを表示しようとしましたが、画面に表示できません。数字を数回試してみたところ、LibGDX がフォントを異常に大きなサイズで描画したことがわかりましたが、フォント サイズを縮小する必要があるのか​​、それともオフスクリーンで描画しているのかは正確にはわかりません。コード全体をコピーして、以下に貼り付けました。

Hiero を使用して、白い背景に黒いアリエルの 256x256 ビットマップ フォントを作成しました。

package com.me.manners;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.PerspectiveCamera;
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;
import com.me.input.Input;
public class Choice implements Screen
{
private PerspectiveCamera camera;
private SpriteBatch batch;
private Texture arrowT;
private Sprite arrowS;
private BitmapFont font;
private String str1 = "Hello World!";
private Input input = new Input();
private Manners game;

public Choice(Manners game)
{
    this.game = game;
    camera = new PerspectiveCamera();
    batch = new SpriteBatch();
    font = new BitmapFont(Gdx.files.internal("data/choice/ariel.fnt"), Gdx.files.internal("data/choice/ariel.png"),false);
    Gdx.input.setInputProcessor(input);

    arrowT = new Texture(Gdx.files.internal("data/choice/arrow.png"));
    arrowT.setFilter(TextureFilter.Linear, TextureFilter.Linear);
    arrowS = new Sprite(new TextureRegion(arrowT, 0, 0, 64, 64));
    arrowS.setSize(0.125f, 0.25f);
    arrowS.setPosition(-0.75f, 0);
}

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

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

    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    arrowS.draw(batch);
    font.setColor(1.0f,1.0f,0.0f,1.0f);
    font.setScale(0.5f,0.5f);
    font.draw(batch, str1, Gdx.graphics.getWidth()*0.5f, Gdx.graphics.getHeight()*0.5f);
    batch.end();
}
}
4

2 に答える 2

1

あなたのゲームは2Dゲームだと思うので、使用camera = new OrthographicCamera(viewportWidth, viewportHeight)すると問題を解決できます。

于 2013-12-03T09:56:23.327 に答える
1

phucvinは非常に良い観察を行います。あなたのゲームは 2D のようですので、OrtographicCameraを使用する必要があります。BitmapFont は正しいピクセル サイズを使用してレンダリングされるため、大きな数字を使用することをお勧めします (これが非常に大きな文字が表示される理由です)。

camera = new OrthographicCamera(480, 320); //for example.

もちろん、スプライトのサイズをより大きなものに変更する必要があります

arrowS.setSize(100, 20); //for example

または、スプライトのビューポート値が低い 2 つ目のカメラを使用します。

于 2014-01-10T09:52:22.747 に答える