Unity キャラクターの移動速度にTime.deltaTimeをかける理由
//
リファレンスに色々書いてあったのですが、初めてUnityを触った時は気にもしていませんでした。
これは、製作者が意図した移動速度を実現するためにdeltaTimeをかけているのですね。(ちゃんと考えれて大したことではない)
Time.deltaTimeniには、最後のフレームを完了するのにかかった時間が格納されています。
Unity - スクリプトリファレンス: Time.deltaTime
製作者は、キャラクターに一秒間にどのくらい進むのかを指定するのが一般的なやり方だと思うのですが、この時キャラクターに移動の処理を指示するのは、大抵Updateメソッド内です。
このUpdateメソッドは1フレームごとに毎回呼ばれるので、キャラクターの動きも1フレームずつ処理することが可能です。
問題は、1フレームの間隔が一定ではないということ
逆に言えば、一秒間に呼ばれるフレーム数が一定ではないということ!1フレーム1m進むとして、、
・60フレーム呼ばれたら 60×1=60m
・30フレーム呼ばれたら 30×1=30m
倍の差が出てしまう、、
これを解決するのが、deltaTime
製作者はキャラクターに秒速を渡して上げた後、その速度に1フレームの処理にかかった時間(deltaTime)をかけてあげれば、一秒たった後にキャラクターが進んだ距離は必ず一定になるという方法でした。