You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现纹理透明度降低?已有提升透明度的方法示例

实现纹理透明度降低的方案

首先明确:Alpha值范围是0(完全透明)到1(完全不透明),你当前的setUpTransparent方法是通过设置Alpha为0.3来让纹理更透明(提升透明程度)。如果要降低透明程度(让纹理更不透明),需要将Alpha值向1调整。

方法1:类似现有逻辑的延迟设置

参考现有代码的结构,实现一个setDownTransparent方法,传入目标Alpha值(比如1.0f),在计数器达到阈值后完成设置:

// 定义对应计数器
private int down = 0;

public void setDownTransparent(float targetAlpha){
    down += 1;
    Color rgbBatch = batch.getColor();
    if (down > 100){
        // 保持RGB通道不变,将Alpha设为目标值(比如1.0f即完全不透明)
        batch.setColor(rgbBatch.r, rgbBatch.g, rgbBatch.b, targetAlpha);
        batch.draw(textureIcon, rectangleIcon.x, rectangleIcon.y);
    }
}

调用时传入1.0f即可让纹理恢复完全不透明:

setDownTransparent(1.0f);

方法2:渐变式降低透明度(平滑过渡)

如果需要从当前透明状态逐步恢复不透明,可以每次微调Alpha值,直到达到目标:

private float currentAlpha = 0.3f; // 初始为你设置的透明值
private final float alphaStep = 0.01f; // 每次调整的步长,可按需修改

public void updateTransparencyDown(){
    // 未达到完全不透明时,逐步提升Alpha值
    if (currentAlpha < 1.0f){
        currentAlpha += alphaStep;
        // 避免Alpha值超过1.0
        currentAlpha = Math.min(currentAlpha, 1.0f);
        Color rgbBatch = batch.getColor();
        batch.setColor(rgbBatch.r, rgbBatch.g, rgbBatch.b, currentAlpha);
    }
    batch.draw(textureIcon, rectangleIcon.x, rectangleIcon.y);
}

每次调用该方法,纹理会逐步变得不透明,直到完全显示。

额外注意

如果需要避免影响后续绘制,建议在修改颜色前后保存并恢复原始状态:

// 保存原始颜色
Color originalColor = new Color(batch.getColor());
// 设置新颜色并绘制
batch.setColor(rgbBatch.r, rgbBatch.g, rgbBatch.b, targetAlpha);
batch.draw(textureIcon, rectangleIcon.x, rectangleIcon.y);
// 恢复原始颜色
batch.setColor(originalColor);

内容的提问来源于stack exchange,提问作者Outsider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:22:51