unityでdeletaTimeをつかって時計を作っています。 とりあえず秒数の1のくらいのみを表示するプログラムを作ります。
unityでdeletaTimeをつかって時計を作っています。 とりあえず秒数の1のくらいのみを表示するプログラムを作ります。 deltaTimeをint型の変数aに加算し,1を超えたら1を表示,2を超えたら・・・ 的な感じでaが10を超えたらaを0にリセットして繰り返しするプログラムを書きました。 ただ、10分くらいで実際の時計と1秒くらいずれます。 なにが原因と考えられますか また解決法はありますか int a = 0; aに毎フレームdeltaTimeを加算 最初は0を表示 if(a>1)1を表示する if(a>2)2を表示する ... if(a>10)a=0;
ベストアンサー
aが10を超えた時に、aに入っている変数は10丁度ではなく、10.123...みたいに小数以下が含まれています。 なので、10を超えたタイミングで0にすると小数以下が切り捨てられてしまい、その分が誤差になっています。 もしやるとしたら、a=0にするのではなく、a-=10にすると0.123...のように小数以下を引き継いで行くことができます。
質問者からのお礼コメント
わかりやすい解説ありがとうございます。 参考にします
お礼日時:2/25 18:51