セキュリティ系の勉強・その他開発メモとか雑談. Twitter, ブログカテゴリ一覧
本ブログはあくまでセキュリティに関する情報共有の一環として作成したものであり,公開されているシステム等に許可なく実行するなど、違法な行為を助長するものではありません.

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