我有一个发出烟雾的粒子系统。我试图使烟雾的明显厚度或黑暗相对于玩家的健康状况。为此,我将相对车辆损坏(0到100)应用于粒子系统起始颜色的alpha。即使我将玩家的伤害除以某个数字(6是下面使用的剪辑),烟雾的黑暗也会超出我的预期。例如,30的alpha看起来像255一样暗。有什么想法吗?更好的方法吗?
var smokeColor = smokeParticles.startColor;
float smokeAlpha = (255 / 100) * (vehicleDamage / 6);
if (smokeAlpha > 255)
{
smokeAlpha = 255;
}
print("smoke alpha " + smokeAlpha.ToString());
var newcolor = new Color(smokeColor.r, smokeColor.g, smokeColor.b, smokeAlpha);
smokeParticles.startColor = newcolor;
答案 0 :(得分:1)
您正在将255
或超过1f
的值传递给期望0f
到1f
值的参数。这就是它不起作用的原因。 1f
完全不透明,0
的alpha完全透明。将smokeAlpha
设置为0f
和1f
之间的值,然后将其传递给新颜色,然后它就可以正常工作。
您的smokeColor.r
,smokeColor.g
和smokeColor.b
看起来不错,因为您是从smokeParticles
变量中获取它们而不是像修改Alpha一样修改它们变量(smokeAlpha
)。
如果您确实希望smokeAlpha
变量使用0
到255
值范围,则必须将最终值除以255
。
var smokeColor = smokeParticles.startColor;
float smokeAlpha = (255 / 100) * (vehicleDamage / 6);
if (smokeAlpha > 255)
{
smokeAlpha = 255;
}
smokeAlpha = smokeAlpha / 255f; //Add this
print("smoke alpha " + smokeAlpha.ToString());
var newcolor = new Color(smokeColor.r, smokeColor.g, smokeColor.b, smokeAlpha);
smokeParticles.startColor = newcolor;