gpt4 book ai didi

android - libGDX 从 Sprite 或纹理中获取像素颜色

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:40 25 4
gpt4 key购买 nike

我在网上搜索它,但找不到任何解决方案。我有一个 Sprite 或纹理,当我触摸它时,我想从触摸坐标中获取像素颜色。

所以我有:

 if (Gdx.input.isTouched()) {
Rectangle spriteBounds = sprite.getBoundingRectangle();
if (sprite.contains(Gdx.input.getX(), Gdx.input.getY())) {
//and here something like
//Color color = sprite.getPixelColor(Gdx.input.getX(), Gdx.input.getY());
}
}

这可能吗?谢谢:)

最佳答案

类似下面的方法可能有效,但未经测试。您可以通过 Sprite 的 TexturePixmap 获取颜色。您需要确保将输入(屏幕)坐标正确转换为纹理的局部坐标。

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));
}
}

关于android - libGDX 从 Sprite 或纹理中获取像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28405361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com