libGDX get pixel color from sprite or texture

后端 未结 1 1871
名媛妹妹
名媛妹妹 2021-01-13 17:39

I was searching it on net but i wasn\'t able to find any solution. I have a sprite or a texture and when i touch it i want to get pixel color from touch coordinates.

<
相关标签:
1条回答
  • 2021-01-13 18:33

    Something like the following might work, but is untested. You can get the color via the Pixmap of the sprite's Texture. You need to make sure that you are converting the input (screen) coordinates properly to the local coordinates of the texture.

    if (Gdx.input.isTouched()) {
        Rectangle spriteBounds = sprite.getBoundingRectangle();
        if (spriteBounds.contains(Gdx.input.getX(), Gdx.input.getY())) {
            Texture texture = sprite.getTexture();
    
            int spriteLocalX = (int) (Gdx.input.getX() - sprite.getX());
            // we need to "invert" Y, because the screen coordinate origin is top-left
            int spriteLocalY = (int) ((Gdx.graphics.getHeight() - Gdx.input.getY()) - sprite.getY());
    
            int textureLocalX = sprite.getRegionX() + spriteLocalX;
            int textureLocalY = sprite.getRegionY() + spriteLocalY;
    
            if (!texture.getTextureData().isPrepared()) {
                texture.getTextureData().prepare();
            }
            Pixmap pixmap = texture.getTextureData().consumePixmap();
            return new Color(pixmap.getPixel(textureLocalX, textureLocalY));
        }
    }
    
    0 讨论(0)
提交回复
热议问题