Time.deltaTime を使用した FPS を意識した物体の操作

シェアする

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度動くようになりました。

Sponsored Links

FPS を固定にするには

一応

Application.targetFrameRate = 60;

とかするといけます。がやっぱり下がる時は問答無用で下がるのでちゃんと Time.deltaTime 使いましょう。

Sponsored Link

シェアする

フォローする