0

これは初めてです。簡単なゲームを作ろうとしていたところ、解決策が見つからない問題に遭遇しました。私が表示しようとしている png は単に表示されておらず、エラーも何もありません。また、描画スペースからはみ出さないように、画面の中央に配置しました。

事前に回答いただきありがとうございます。私のコードは次のとおりです。

public class Kurve implements ApplicationListener {
Texture left;
Texture right;
private OrthographicCamera camera;
private SpriteBatch batch;
ShapeRenderer sr;
float w;
float h;
float circleX;
float circleY;
Circle c;

@Override
public void create() {
    w = Gdx.graphics.getWidth();
    h = Gdx.graphics.getHeight();
    sr = new ShapeRenderer();
    camera = new OrthographicCamera(1, h / w);
    batch = new SpriteBatch();
    left = new Texture(Gdx.files.internal("key_left.png"));
    right = new Texture(Gdx.files.internal("key_right.png"));
    circleX = w / 2;
    circleY = 0;
    c = new Circle(circleX, circleY, 5);
    Rectangle leftKey = new Rectangle(0, h / 2, 64, 64);
    Rectangle rightKey = new Rectangle(w - 64, h / 2, 64, 64);

}

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

@Override
public void render() {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    if (circleY >= h) {
        circleY = 0;
    }
    batch.setProjectionMatrix(camera.combined);

    batch.begin();
    batch.draw(left, 10, 10);
    batch.draw(right, h / 2, w / 2);
    batch.end();

    sr.begin(ShapeType.Filled);
    sr.setColor(1, 0, 0, .3f);
    sr.circle(w / 2, circleY += 1, 5);
    c.set(w / 2, circleY += 1, 5);
    sr.end();

}

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

@Override
public void pause() {
}

@Override
public void resume() {
}

}

4

1 に答える 1

1

問題は多分これ

camera = new OrthographicCamera(1, h / w);

幅 1 ピクセル、高さ 9/16 程度のレンダリング領域があります。つまり、おおよそ 1px * 1px の画面サイズです。左のテクスチャを (10,10) で描画すると、それは既にレンダリング領域の外にあります。

このようにしてください:

camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
于 2013-08-21T11:10:48.260 に答える