はじめに
PixiJSでは、ticker.deltaTimeとticker.deltaMSという似たものがあります。
UnityではdeltaTimeがフレーム間の秒数を取得していますが、ticker.deltaTimeでは全く違う物を返しています。
勘違いしていたせいで意図した挙動にならずに困っていたので、詳しく調べてみました。2025-02-20
PixiJSでは、ticker.deltaTimeとticker.deltaMSという似たものがあります。
UnityではdeltaTimeがフレーム間の秒数を取得していますが、ticker.deltaTimeでは全く違う物を返しています。
勘違いしていたせいで意図した挙動にならずに困っていたので、詳しく調べてみました。deltaTimeは前のフレームから現在のフレームまでに進んだ時間を「フレーム」単位で表します。
60FPS のとき、1フレーム進むと値が 1 になり、2フレーム進むと値が 2 になります。
30FPS のとき、1フレーム進むと値が 0.5 になり、2フレーム進むと値が 1.0 になります。
つまりフレームレートに依存するので、物理演算などで「秒」を計算するときは値がガンガン変わる可能性があります。deltaMSは前のフレームから現在のフレームまでに進んだ時間を「ミリ秒」単位で表します。
経過時間がミリ秒で取得できるので、フレームレートに依存せず取得できます。
ミリ秒ではなく秒にしたいときは、1000で割って単位変換しましょう。
物理演算などに使うと良さそうです。// 前のフレームから現在のフレームの時間を秒で取得する
const deltaTimeInSeconds = ticker.deltaMS / 1000;
フレームレートを気にしない ⇒ ticker.deltaTime
フレームレートを気にする・物理演算 ⇒ ticker.deltaMS
ゲーム制作で使うときは、ticker.deltaMSの方がよさげticker.deltaTimeとticker.deltaMSについてまとめてみました。
元々Unityを使っていたため、deltaTimeで経過時間をフレーム単位で返すと言うことに気づかず、かなり回り道をしてしまいました。
どんな言語でも思い込みをせずに、ドキュメントを読んでから実装することが大切ですね。
これ以外にも色々な値がtickerから取得できるので、自分で使ってみて試すのが良いと思います。