読者です 読者をやめる 読者になる 読者になる

196の日記

完全に開発メモと雑談、その他忘れそうな計算式などを書き溜める場所になっています!

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)をかけてあげれば、一秒たった後にキャラクターが進んだ距離は必ず一定になるという方法でした。