与玩家健康相关的烟雾不透明度
Smoke Opacity Relative to Player Health
我有一个发射烟雾的粒子系统。我试图根据玩家的健康状况制作烟雾的表观厚度或暗度。为此,我将相对车辆损坏(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;
您正在将 255
或大于 1f
的值传递给需要 0f
到 1f
值的参数。这就是为什么它不起作用。 1f
是完全不透明的,而 0
的 alpha 是完全透明的。使 smokeAlpha
成为 0f
和 1f
之间的值,然后将其传递给您的新 Color 然后它应该可以工作。
您的 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;
我有一个发射烟雾的粒子系统。我试图根据玩家的健康状况制作烟雾的表观厚度或暗度。为此,我将相对车辆损坏(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;
您正在将 255
或大于 1f
的值传递给需要 0f
到 1f
值的参数。这就是为什么它不起作用。 1f
是完全不透明的,而 0
的 alpha 是完全透明的。使 smokeAlpha
成为 0f
和 1f
之间的值,然后将其传递给您的新 Color 然后它应该可以工作。
您的 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;