4

libgdx を使用してデバッグ用の線を引こうとしていますが、失敗しました。これは私のコードです

public class MainMenu extends Screen implements InputProcessor {

private OrthographicCamera camera;
SpriteBatch myBatch;
ShapeRenderer shapeDebugger;

public MainMenu(Game game) {
    super(game);
    camera= new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    camera.update();}

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

    myBatch.begin();
    stage.draw();
    Gdx.gl10.glLineWidth(10);
    shapeDebugger.setProjectionMatrix(camera.combined);
    shapeDebugger.begin(ShapeType.Line);
    shapeDebugger.setColor(1, 1, 1, 1);
    shapeDebugger.line(2, 2, 5, 5);
    myBatch.end();
    }
}

行からエラーが発生します

shapeDebugger.setProjectionMatrix(camera.combined);

@プラナヴ008

どうもありがとうございます。私はそれを開始する必要があるとは思っていませんでした。しかし、私には本当の問題があります。このようにゲーム画面の中央に線を引きます。

    Gdx.gl10.glLineWidth(2);
    shapeDebugger.setProjectionMatrix(camera.combined);
    shapeDebugger.begin(ShapeType.Line);
    shapeDebugger.setColor(1, 1, 1, 1);
    shapeDebugger.line(Gdx.graphics.getWidth()/2, 0,Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight());
    shapeDebugger.end();

画面のサイズを変更しようとすると、中央に更新されず、右に遠くなります。

4

4 に答える 4

5

nullpointerExceptionShapeRenderer のオブジェクトを作成していないため、取得したに違いありません。この行をコンストラクターに挿入します。

shapeDebugger=new ShapeRenderer();
于 2013-07-25T04:34:47.107 に答える
1

私の答えはあなたにとっては遅すぎるかもしれませんが、同じポジショニングの問題を抱えている人にとっては.

サイズ変更後の位置に関する 2 番目の質問は、ビューポートが変更されていないためです。ウィンドウ サイズが変更されたため、アプリケーションは関数によって作成時に設定された同じピクセル サイズを使用しています。camera.setToOrtho

サイズ変更時にビューポートを更新してください!

//-----------------------------------------------------------------
@Override
public void resize (int width, int height) {
    camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    camera.update();        
}
于 2014-04-28T17:44:37.573 に答える
0

ShapeRenderer の定義と初期化

ShapeRenderer shapeDebugger;

@Override
public void create() {
    shapeDebugger = new ShapeRenderer();
 ...

レンダー コールバックで線を引く

    @Override
    public void render() {
        //render scene

        Gdx.gl.glClearColor(69f / 255, 90f / 255, 100f / 255, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    ... 
   shapeDebugger.setProjectionMatrix(camera.combined);
        shapeDebugger.begin(ShapeRenderer.ShapeType.Line);
        Gdx.gl.glLineWidth(10 / camera.zoom);
        shapeDebugger.setColor(1, 0, 0, 1);
        shapeDebugger.line(screenWidth / 2, 0, screenWidth / 2, screenHeight);
        shapeDebugger.line(0, screenHeight / 2, screenWidth, screenHeight / 2);
        shapeDebugger.end();
于 2021-04-09T11:26:07.083 に答える