content【Unity】Time.deltaTimeの正しい使い方わかってる?適当に掛ければいいてもんじゃない!UnityTime.deltaTime、正しく使えていますか?UnityにはTime.deltaTimeというプロパティが存在します。このプロパティを計算式に掛けることで、「スペックによらずある処理の速度が一定になる」と思っている人もいるでしょう。実際にWebを検索すると、「フレームレートが一定でないので、Time.deltaTimeを掛けないといけない」という説明が多く出てきます。このプロパティは本当にそういう性質のものなのか。掛けることで処理が安定するのか。その意味をしっかり把握して、必要な場所で正しく使うようにしましょう。これ自身に処理を安定化させる機能はありません。単純に秒数を返すだけです。いう場面でTime.deltaTimeを使えばよいのか適当に計算式に混ぜ込めば処理がなめらかになるといった理解は間違いです。答えを言ってしまうと、「右辺にTime.deltaTimeを掛けた時に、左辺と同じ単位になったら使ってもよい」です。「単位」とはここでいう単位とは、「物理量」を示す単位のことです。「秒[s]」「距離[m]」「速さ[m/s]」といったものです。単位には大事な性質があります。じかん」という式は小学生のころに習ったはずです。その式を思い出し、それが成り立つように式を組み立てるだけです。「なぜ速度にTime.deltaTimeを掛けないといけないのか」の答えは「実際にそのフレームで進んだ"距離"を求める必要があるため」です。続いて、左辺が速度で、この速度を制御したい場合です。この場合、右辺で扱うパラメータが最初から速度であるならばTime.deltaTimeを掛けてはいけません。これも単位を計算すればすぐわかります。移動量と加速度ちょっと複雑な例ですが、「加速度」を使って「移動量」を計算する場合です。この場合も、それぞれの単位をしっかり考えれば難しくはありません。Lerpで使う例Time.deltaTimeをよくMathf.LerpやVector3.Lerpと組み合わせることがあります。この場合は、「パラメータの変化速度[1/s]に対してTime.deltaTimeを掛けている」思えばよいです。}}まとめTime.deltaTimeは処理を安定化させる魔法のパラメータではありません。経過時間を返すだけのプロパティです。そもそも「Time.deltaTimeを掛けると処理がなめらかになる。フレームレートが一定でないから」という説明自体が間違いだらけです。「経過時間のパラメータが必要な計算式を(意識せずとも)実装しており、その経過時間の項にTime.deltaTimeがぴったり収まる」というだけに過ぎません。自分が今、なんの式を書いており、どのような計算が行われているのか、をしっかり意識して書けば難しい話ではありません。その指標となるのが「単位」であり、これを意識すればTime.deltaTimeで迷うことはないでしょう。upLoginユーザーは見つかりませんでした。