2016-08-30 7 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から色が正しくないユニティC位(http://stackoverflow.com/questions/38899817/colors-from-rgb-are-not-correct-unity-c-sharp)の可能性の重複 – Serlite

答えて

1

あなたは0f1fに値を期待していたパラメータに1f以上です255または値を渡しています。それがなぜ機能しないのです。 1fは完全に不透明で、0のアルファは完全に透明です。 smokeAlpha0f1fの間の値にしてから、新しい色に渡してください。あなたはsmokeParticles変数からそれらを得ているし、あなたがアルファ変数(smokeAlpha)を変更する方法のようにそれらを変更していないので、

あなたsmokeColor.rsmokeColor.gsmokeColor.bは正常に見えます。

あなたが本当に0255への値の範囲を使用するsmokeAlpha変数をしたいなら、あなたは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

うん...私が逃したもの。ありがとうございました。 – Roger