web-dev-qa-db-ja.com

LibGDXShapeRendererの円の描画

生成された座標に円を描くためのいくつかの解決策を試しました。動作していませんが、filledCircleメソッドの何が問題なのかわかりません。どうすれば交換できますか?

メッセージ:

FilledCircleを解決できないか、フィールドではありません

コード:

package com.example.game;

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.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;

public class MainClass extends ApplicationAdapter {
SpriteBatch batch;
OrthographicCamera camera;
ShapeRenderer shapeRenderer;
private Sprite sprite;     

@Override
public void create () {
    shapeRenderer = new ShapeRenderer();
    batch = new SpriteBatch();
}

@Override
public void render () {

     Gdx.gl.glClearColor(1, 1, 1, 1);
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

     Gdx.gl.glEnable(GL20.GL_BLEND);
     Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
     Gdx.gl.glDisable(GL20.GL_BLEND);

      batch.setProjectionMatrix(camera.combined);

      batch.begin();
      batch.draw(Sprite, 200, 200, 64, 64);
      shapeRenderer.begin(ShapeType.FilledCircle);
      shapeRenderer.filledCircle(50, 50, 32);
      shapeRenderer.setColor(Color.BLACK);
      shapeRenderer.end();
      batch.end();  
}


}
7
plaidshirt

メソッドbegin(ShapeRenderer.ShapeType type)ShapeTypeを受け入れます。 3つあります Shapetypes :塗りつぶし、線、点。あなたが使用しているようなFilledCircleはありません(それがエラーメッセージがあなたに言うことです)。

したがって、shapeRenderer.begin(ShapeType.Filled);を使用する必要があります

また、filledCircle()メソッドはありません。 shapeRenderer.circle(50, 50, 32);を試してください。

[〜#〜]編集[〜#〜]

これは、いくつかの間違いのないコードです。あなたはそれを理解し、いくつかの部分を完了する必要があります、コピー&ペーストはそれをしません。

@Override
public void create () {
    shapeRenderer = new ShapeRenderer();
    batch = new SpriteBatch();

    camera = new OrthographicCamera(300, 480); //FILL THE VALUES HERE
    Sprite = new Sprite(new Texture(Gdx.files.internal("badlogic.jpg")));  //FILL THE VALUES HERE

     Sprite.setBounds(200, 200, 64, 64);
}


@Override
public void render () {

     Gdx.gl.glClearColor(1, 1, 1, 1);
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

     Gdx.gl.glEnable(GL20.GL_BLEND);
     Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
     Gdx.gl.glDisable(GL20.GL_BLEND);

      batch.setProjectionMatrix(camera.combined);

      batch.begin();  
      Sprite.draw(batch);  
      batch.end();

      shapeRenderer.setColor(Color.BLACK);
      shapeRenderer.begin(ShapeType.Filled);
      shapeRenderer.circle(50, 50, 32);
      shapeRenderer.end();
}
19
MadEqua

バッチ内でシェイプレンダラーを初期化することはできません。バッチを停止(バッチ終了)してシェイプレンダラーを開始します。シェイプレンダラーを停止すると、バッチを再開できます。失敗してすみません、私の英語はあまり上手ではありません

1
Rafale encina