Difference between revisions of "love.timer.getDelta (日本語)"
(New translation (Based revision : 25 March 2011, at 18:02)) |
m |
||
(4 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
=== 返値 === | === 返値 === | ||
{{param|number|dt|経過時間 (秒単位)}} | {{param|number|dt|経過時間 (秒単位)}} | ||
+ | |||
+ | == 用例 == | ||
+ | <source lang="Lua"> | ||
+ | -- 複数のタイマーを扱います。 [r] で タイマーA を、 [d] タイマーB をリセットします。 | ||
+ | -- これによりタイマーの基本動作を理解できるでしょう。 | ||
+ | -- もちろん、配列を使用すればタイマーを追加・操作できます。 | ||
+ | -- | ||
+ | -- 注釈 | ||
+ | -- 原則として love.timer.* は内部算術計算を行わないのでカウンタ用の変数がないと計測できません。 | ||
+ | -- love.timer.getDelta() は およそ 0.016 ~ 0.018 までのデルタタイムを出力します (環境依存) | ||
+ | -- 得られた値の小数点以下が不要であれば math.floor(変数名) で四捨五入してください。 | ||
+ | -- | ||
+ | -- 違いとして love.timer.getDelta() は 2フレーム間/秒ですが love.timer.getTime() は | ||
+ | -- 特定の秒数 (Windows の場合はタスクマネージャーのパフォーマンスタブで表示されている稼働時間) であることです。 | ||
+ | -- 使い分けの一例として getDelta は高速処理・超短時間・フレームレート依存のため厳密な精度を必要としない用途向け、 | ||
+ | -- getTime は通常処理・長時間・フレームレートに依存しない用途向けであると考えられます。 | ||
+ | -- (デルタタイムは、ディスクアクセスなどのI/O処理が集中したり、バックグラウンド動作になると精度が低下します) | ||
+ | -- | ||
+ | -- love.update(dt) では 引数 dt (LOVE の内部処理ではローカル変数 dt です。詳しくは boot.lua を参照のこと) を | ||
+ | -- 使ってデルタタイムを取得することはできますが、 dt だけでは複数のタイマーを非同期や任意起動で扱うときに | ||
+ | -- 操作・管理が煩雑になる場合があるので、状況に応じて使い分けをお勧めします。なお、 dt = 0 にすることで love.update のタイマーを | ||
+ | -- リセットすることができます。 | ||
+ | |||
+ | local timerA = 0 | ||
+ | local timerB = 0 | ||
+ | |||
+ | love.timer.step() | ||
+ | |||
+ | function love.draw() | ||
+ | -- 本来ならばタイマーは love.update() へ移動したほうがいいです。 | ||
+ | timerA = timerA + love.timer.getDelta() | ||
+ | timerB = timerB + love.timer.getDelta() | ||
+ | |||
+ | |||
+ | love.graphics.print(timerA, 0, 0) | ||
+ | love.graphics.print(timerB, 0, 24) | ||
+ | print(love.timer.getDelta()) -- lovec.exe を使用するとコンソールで値を確認できます。 | ||
+ | -- print(math.floor(love.timer.getTime())) | ||
+ | |||
+ | end | ||
+ | |||
+ | function love.keypressed(key) | ||
+ | if key == 'r' then | ||
+ | -- love.timer.step() | ||
+ | timerA = 0 | ||
+ | end | ||
+ | |||
+ | if key == 'd' then | ||
+ | -- love.timer.step() | ||
+ | timerB = 0 -- タイマーのリセット | ||
+ | end | ||
+ | |||
+ | |||
+ | end | ||
+ | </source> | ||
+ | |||
== 関連 == | == 関連 == | ||
* [[parent::love.timer (日本語)]] | * [[parent::love.timer (日本語)]] | ||
+ | * [[love.timer.getAverageDelta (日本語)]] | ||
[[Category:Functions]] | [[Category:Functions]] | ||
{{#set:Description=最近の2フレーム間における時間を返します。}} | {{#set:Description=最近の2フレーム間における時間を返します。}} | ||
Line 16: | Line 73: | ||
{{#set:PrettySince=0.9.0}} | {{#set:PrettySince=0.9.0}} | ||
== そのほかの言語 == | == そのほかの言語 == | ||
− | {{i18n|love.timer.getDelta}} | + | {{i18n (日本語)|love.timer.getDelta}} |
Latest revision as of 08:27, 6 June 2019
最近の2フレーム間における時間を返します。
関数
概要
dt = love.timer.getDelta( )
引数
なし。
返値
number dt
- 経過時間 (秒単位)
用例
-- 複数のタイマーを扱います。 [r] で タイマーA を、 [d] タイマーB をリセットします。
-- これによりタイマーの基本動作を理解できるでしょう。
-- もちろん、配列を使用すればタイマーを追加・操作できます。
--
-- 注釈
-- 原則として love.timer.* は内部算術計算を行わないのでカウンタ用の変数がないと計測できません。
-- love.timer.getDelta() は およそ 0.016 ~ 0.018 までのデルタタイムを出力します (環境依存)
-- 得られた値の小数点以下が不要であれば math.floor(変数名) で四捨五入してください。
--
-- 違いとして love.timer.getDelta() は 2フレーム間/秒ですが love.timer.getTime() は
-- 特定の秒数 (Windows の場合はタスクマネージャーのパフォーマンスタブで表示されている稼働時間) であることです。
-- 使い分けの一例として getDelta は高速処理・超短時間・フレームレート依存のため厳密な精度を必要としない用途向け、
-- getTime は通常処理・長時間・フレームレートに依存しない用途向けであると考えられます。
-- (デルタタイムは、ディスクアクセスなどのI/O処理が集中したり、バックグラウンド動作になると精度が低下します)
--
-- love.update(dt) では 引数 dt (LOVE の内部処理ではローカル変数 dt です。詳しくは boot.lua を参照のこと) を
-- 使ってデルタタイムを取得することはできますが、 dt だけでは複数のタイマーを非同期や任意起動で扱うときに
-- 操作・管理が煩雑になる場合があるので、状況に応じて使い分けをお勧めします。なお、 dt = 0 にすることで love.update のタイマーを
-- リセットすることができます。
local timerA = 0
local timerB = 0
love.timer.step()
function love.draw()
-- 本来ならばタイマーは love.update() へ移動したほうがいいです。
timerA = timerA + love.timer.getDelta()
timerB = timerB + love.timer.getDelta()
love.graphics.print(timerA, 0, 0)
love.graphics.print(timerB, 0, 24)
print(love.timer.getDelta()) -- lovec.exe を使用するとコンソールで値を確認できます。
-- print(math.floor(love.timer.getTime()))
end
function love.keypressed(key)
if key == 'r' then
-- love.timer.step()
timerA = 0
end
if key == 'd' then
-- love.timer.step()
timerB = 0 -- タイマーのリセット
end
end
関連