【问题标题】:Smoke Opacity Relative to Player Health与玩家健康相关的烟雾不透明度
【发布时间】:2016-08-30 23:37:46
【问题描述】:

我有一个发射烟雾的粒子系统。我试图使烟雾的明显厚度或黑暗相对于玩家的健康状况。为此,我将相对车辆损坏(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;

【问题讨论】:

标签: c# unity3d particle-system


【解决方案1】:

您将255 或大于1f 的值传递给需要0f1f 值的参数。这就是为什么它不起作用。 1f 完全不透明,0 的 alpha 完全透明。将smokeAlpha 设为0f1f 之间的值,然后将其传递给您的新颜色,然后它应该可以工作。

您的 smokeColor.rsmokeColor.gsmokeColor.b 看起来不错,因为您是从 smokeParticles 变量中获取它们的,并且您没有像修改 alpha 变量(smokeAlpha)那样修改它们。

如果您真的希望smokeAlpha 变量使用0255 的值范围,那么您必须将最终值除以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;

【讨论】:

  • 是的......正是我错过的。谢谢。
猜你喜欢
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多