前提
0~1で割合を求めたときに計算結果が0になるという問題です。
これはUnityに限った話ではないと思いますが割合を求めるとき、整数(int型)を使うと結果が0になる現象があります。
以下のコードを書いたとき、rateは0.4になるはずです。
void Test () {
int max = 100;
int current 40;
float rate = current / max;
Debug.Log(rate);
}
しかし出力されるのは 0 です。
理由は、整数では小数点以下は切り捨てられるためです。
なので整数と整数の除算はもちろん整数となるはずであり、小数点以下は切り捨てられるため、求めたい0~1の割合ではなく0か1かになってしまいます。
解決
これを解決するために、
計算時に
void Test () {
int max = 100;
int current 40;
float rate = (float)current / (float)max;
Debug.Log(rate);
}
実行結果
ちゃんと0~1の割合が求められているのが確認できました。