Как сделать текстуру прозрачной?

Рейтинг: 0Ответов: 1Опубликовано: 13.04.2023

Есть метод который увеличивает прозрачность текстуры. Он вызывается в методе render(). При вызове этого метода в аргументы ему передается значение 0.3f. Каждый цикл прозрачность повышается, в итоге получится 1.0f.

public void setUpTransparent(float alpha) {
    up += 1;
    Color rgbBatch = spritBbatch.getColor();
    // Здесь маленькая пауза.
    if (up > 100){
        // Устанавливаем альфу.
        batch.setColor(rgbBatch.r, rgbBatch.g, rgbBatch.b, alpha);
        // Рисуем текстуру по заданным координатам.
        batch.draw(textureIcon, rectangleIcon.x, rectangleIcon.y);
    }
}

Как сделать так, что бы прозрачность текстуры убывала? Например, сейчас прозрачность 1.0f, а мне нужно что бы она упала у отрисованного обьекта до 0.1f. Как это сделать?

Ответы

▲ 1Принят

Основная идея - это переменная, которая отвечает за прирост, которая меняет свой знак при достижении граничных значений. По сути, направление прироста, если можно так сказать.

        if(alpha < 0 || alpha >= 1)
            delta *= -1;
        alpha += delta;
        setUpTransparent(alpha);

За основу взял шаблон, который генерит сам libgdx по-умолчанию:

public class Alpha extends ApplicationAdapter {
    private SpriteBatch batch;
    private Texture image;
    float alpha, delta;
    @Override
    public void create() {
        batch = new SpriteBatch();
        image = new Texture("libgdx.png");
        alpha = 1f;
        delta = 0.1f;
    }

    @Override
    public void render() {
        Gdx.gl.glClearColor(0.15f, 0.15f, 0.2f, 1f);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        batch.begin();
        Color rgbBatch = batch.getColor();
        batch.setColor(rgbBatch.r, rgbBatch.g, rgbBatch.b, alpha);
        batch.draw(image, 140, 210);
        batch.end();

        if(alpha < 0 || alpha >= 1)
            delta *= -1;
        alpha += delta;
    }