2016-08-30 4 views
0

У меня есть система частиц, испускающая дым. Я пытаюсь сделать видимую толщину или темноту дыма относительно здоровья игрока. Чтобы сделать это, я применяю относительный урон транспортного средства (от 0 до 100) к альфам цвета запуска системы частиц. Даже когда я разделяю повреждение игрока некоторым числом (6 - это то, что используется ниже), темнота дыма выходит за пределы того, что я ожидаю. Например, альфа 30 выглядит так же темно, как 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

Возможный дубликат [Цвета из RGB не правильно Unity C#] (http://stackoverflow.com/questions/38899817/colors-from-rgb-are-not-correct-unity-c-sharp) – Serlite

ответ

1

Вы передаете 255 или значения, которые являются более 1f к параметру, который ожидает 0f на 1f значения. Вот почему он не работает. 1f полностью непрозрачен, а альфа 0 полностью прозрачна. Сделайте smokeAlpha значение между 0f и 1f, затем передайте его новому цвету, после чего он должен работать.

smokeColor.r Ваш, smokeColor.g и smokeColor.b выглядит прекрасно, потому что вы получаете их от переменной smokeParticles и вы не изменяя их как способ изменяемого альфа-переменную (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; 
+1

yep ... точно, что я пропустил. Спасибо. – Roger

Смежные вопросы