Unityでは Update メソッドにより1フレームの処理を簡単に行う事ができます。が、FPSは端末の状況によって可変になるので注意が必要です。
例えば以下のコードを動かすとします。
function update() {
transform.Rotate(0, 1, 0);
}
Y 軸を回転するだけです。1フレームにつき1度回転させます。普通ゲームとかは 60FPS が多いとおもいますが Unity エディタ上では FPS 設定関係なく可能な限りぶん回すようです。
さてこのコード、FPS 60 であれば 一秒間に 60度回転されますが、PCが重くなったりしてFPSが下がった場合、その分回転する量も下がります。FPS設定無視して動く Unity エディタ上では 60度以上回転します。良くないですね。
この問題をどう解決するか、Unityでは Time.deltaTime というとても簡単に解決する変数があります。
この値には、常に前のフレームとの時間差が入っています。これを使用して上記コードを書き換えてみます。
function update() {
transform.Rotate(0, 60 * Time.deltaTime, 0);
}
これで一秒で60度動くようになりました。
FPS を固定にするには
一応
Application.targetFrameRate = 60;
とかするといけます。がやっぱり下がる時は問答無用で下がるのでちゃんと Time.deltaTime 使いましょう。
Sponsored Link
コメント