簡體   English   中英

如何查看是否在 libgdx 中觸摸了紋理?

[英]How to see if a texture is touched in libgdx?

幾乎我希望我的紋理在觸摸時移動到屏幕上的隨機位置,當它錯過時我想 system.out("missed")。 我不知道如何查看它是否被觸摸。 現在我只能在屏幕是觸摸的情況下才能得到,並且每次觸摸都會記錄大約 10 次觸摸,因為它渲染得如此之快。

public void render(float delta) {
    Gdx.gl.glClearColor(0,1,0,1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);   
    
    camera.update();

    game.batch.setProjectionMatrix(camera.combined);
    game.batch.begin();

    if(Gdx.input.isTouched()) {
        int randomX2 = (int)MathUtils.random(100,500);
        int randomY2 = (int)MathUtils.random(100,500);
        game.batch.draw(boxImage, randomX2, randomY2);
    }
    
    game.batch.end();
}

如果randomX2randomY2是紋理的坐標,則可以使用以下代碼進行檢查:

Rectangle bounds = new Rectangle(randomX2, randomY2, boxImage.getWidth(), boxImage.getHeight());
Vector3 tmp = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(tmp);

if (bounds.contains(tmp.x, tmp.y)) {
    System.out.println("Is touched");
}

我可以在不使用 Vector3 的情況下解決這個問題。

var upArrowCircle = Circle(randomX, randomY, radius)
if(upArrowCircle.contains(Gdx.input.getX().toFloat(), Gdx.input.getY().toFloat()))
{
    Gdx.app.log("upArrow", "contains")
}

對我來說它完美無缺。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM