libgdxで2dプラットフォームをプログラミングしています。プレーヤーがボタンをクリックしてレベルを読み込むメニュー画面を作ろうとしています。クリック座標にはgdx.input、ボタン座標にはTextureRegion.getRegionX()を使用します。彼らは一緒に同期しないと私はそのcamera.unprojectを読んでこの問題を解決する必要があります。私はそれを正当に使用しましたが、コードはまだ一致しません。 camera.unprojectはxとyをスクリーンの中心として0,0を設定しているようですが、batch.draw(これはTextureRegionを画面に描画するメソッドです)は左下隅をxとyの0として使用しているようですここで、0Java libgdx camera.unproject()はbatch.draw()と同期していません
は、コードですが、私は私が関連するとは思わなかった何かを左:
public class LevelScreen implements Screen {
private TextureRegion level_bg;
private SpriteBatch batch;
private Camera camera;
private TextureAtlas textureAtlas;
private TextureRegion lockselectbg[]=new TextureRegion[10];
public LevelScreen(){
}
@Override
public void show() {
batch=new SpriteBatch();
camera = new OrthographicCamera(500,700);
LevelStatus.put();
LevelStatus.get();
textureAtlas=new TextureAtlas(Gdx.files.internal("levelatlas.pack"));
Array<AtlasRegion> atlasArrays = new Array<AtlasRegion>(textureAtlas.getRegions());
level_bg = atlasArrays.get(0);
lockselectbg[0] = atlasArrays.get(21);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(159/255.0f,220/255.0f,235/255.0f,0xff/255.0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(level_bg, -500/2,-348/2);
batch.draw(lockselectbg[0], -180,0);
batch.end();
if(Gdx.input.isTouched()){
Vector3 tmp = new Vector3(Gdx.input.getX(),Gdx.input.getY(), 0);
camera.unproject(tmp);
Rectangle textureBounds = new Rectangle(lockselectbg[0].getRegionX(), lockselectbg[0].getRegionY(), lockselectbg[0].getRegionWidth(), lockselectbg[0].getRegionHeight());
if(textureBounds.contains(tmp.x, tmp.y)) {
System.out.println("It worked");
}
}
}
@Override
public void dispose() {
textureAtlas.dispose();
batch.dispose();
}
これも機能しませんでした。それは前と同じことをしているようですが、実際に私が持っていたものとあなたが持っていたものとの違いは実際には分かりません。 – foopydoop
あなたは実際にその答えを読んだことがありますか?正確には見えないものは何ですか? – Xoppa
私のプロジェクトであなたのコードを使用しましたが、私は同じ結果を得ました。あなたの答えでは、Gdx.Inputの座標をcamera.unprojectを使って変換します。これは同じことですが、唯一の違いはRectangleと.containsをボタン座標に使用していますが、ブール値を使用する点です。 – foopydoop