2017-10-13 8 views
1

ゲームの開始時刻に関する画像を入力しようとしていますが、時間の正しい値を取得していますが、これらの値(3 ... 0)を(0 ... 1)に変換することはできません。3秒が経過した場合のように、画像を塗りつぶすために、画像は3秒間で満たされます。3 ...... 0を0に変換する...... 1、Unity3d(Time.time)

private float total_time = 3.0f; 
private float end_time; 
private float time_change_at; 
private float init_time; 

void Start() 
{ 
    init_time = Time.time; 
    end_time = init_time + total_time; 
    time_change_at = total_time - 1.0f; 
} 
    void Update() 
{ 
    if (total_time <= 0.0f) 
    { 
     return; 
    } 
    total_time = end_time - Time.time; 

    if (total_time >= time_change_at) 
    { 
     time_change_at = time_change_at + 1.0f; 
    } 
    fill_the_bar(total_time); 
    string time_to_show = Mathf.Floor((total_time/60.0f)).ToString("00")+":"+(total_time%60).ToString("00"); 
    print (time_to_show); 


} 

public void fill_the_bar(float val) 
{ 
here i want to fill image gradually 
//image.fillAmount 
} 
+0

"画像が3秒間で満たされます" ....どのような画像ですか?説明してください – PassetCronUs

+0

0 ... 3を0 ... 1に変換しようとしていますか?もしそうなら、 'total_time'を3.0fで割ることができると思います。 – Sarcoma

+0

最初はtotal_timeが3を返し、0に向かって減少します(Time.timeから)ので、ここでは画像0〜100%を入力します。 intial value 3のように画像は0.0% 2画像は0.5 、1.5 = 0.8 、1 = 1(画像は完全に塗りつぶされます)で塗りつぶされます。 –

答えて

1

あなたは3.0Fは、カウンタのmax_timeあるMath.abs(total_time - 3.0f)/3.0fを使用して、カウントを逆にすることができます。

public void fill_the_bar(float total_time) 
{ 
    float max_time = 3.0f 

    image.fillAmount = Math.Abs(total_time - 3.0f)/3.0f 
} 
+0

ありがとうございます。それはうまく動作します –

+0

そのMath.Abs​​はそうでなければMath.absではなく、すべてが完璧です –

+0

ありがとう、答えを更新しました。 – Sarcoma

関連する問題