Unity 5 日記 3 deltaTime の適用
なんだか 前回 まで大真面目に記事を書いてたせいで新しく記事を書くのが億劫になってきてしまっていたので, 今回からもっと雑に書いていくことにする.
UnityEngine.MonoBehaviour
を継承したクラスのメンバ関数 Update
は毎フレーム呼ばれるが, 毎フレーム呼ばれるということはフレームレートの高い環境ではそのままではゲームの動作まで早くなってしまう. そこで, Time.deltaTime
を乗算する事でこの問題を解決する.
void Update() { var x_axis = Input.GetAxis("Horizontal"); var y_axis = Input.GetAxis("Vertical"); var vx = x_axis * 60 * Time.deltaTime; var vy = y_axis * 60 * Time.deltaTime; var v = new Vector3(vx, vy, 0); this.transform.position += v; }
Time.deltaTime
には前回のフレームから今回のフレームまでに経過した時間が秒単位で保持されている. 型は float
である.
FPS が 60 の環境である事を前提にフレームカウンタを回して任意の動作を実行するようなアルゴリズムを実行した場合は, Time.time
の差分を取るか, Time.deltaTime
を毎フレーム加算して, 大小の比較演算によって実行する必用がああるだろう. 浮動小数点であるから, 同値比較を行うと危険である事に注意.