增量時(shí)間(deltaTime)

描述

增量時(shí)間是根據(jù)上一幀更新游戲以來經(jīng)過的時(shí)間,用于動態(tài)的更新游戲場景渲染。

基于時(shí)間的動畫

在早期游戲開發(fā)中,一些游戲的場景移動速度依賴于CPU的運(yùn)行速度,游戲場景將每幀在屏幕上移動一定數(shù)量的像素。如果CPU只能以每秒15幀(FPS)運(yùn)行游戲,并且游戲場景被代碼定義為每秒向左移動10個(gè)像素,則游戲場景將以每秒150個(gè)像素向左移動。但是,如果性能更好的處理器可以每秒60幀運(yùn)行游戲呢?游戲場景將以600像素移動!怎么能解決這個(gè)問題呢?

解決這個(gè)問題的關(guān)鍵是記錄自上一幀以來經(jīng)過的時(shí)間。這個(gè)時(shí)間通常叫做增量時(shí)間(deltaTime)。只要我們拿到了增量時(shí)間,我們就可以通過使用下面的公式計(jì)算出我們的游戲場景應(yīng)該移動此幀的距離:

const distance = speed * deltaTime

以上三個(gè)變量:

  • distance:移動當(dāng)前幀的像素?cái)?shù)
  • speed:每秒像素的速度
  • deltaTime:上一幀以來經(jīng)過的時(shí)間

示例:

const APP.core = {
 frame() {
 APP.core.setDelta()
 APP.core.update()
 APP.core.render()
 APP.core.animationFrame = window.requestAnimationFrame(APP.core.frame)
 },

 setDelta() {
 APP.core.now = Date.now()
 APP.core.delta = (APP.core.now - APP.core.lastTime ) / 1000 // 上一幀以來經(jīng)過的秒數(shù)
 APP.core.lastTime = APP.core.now
 },

 update() {
 // 更新值
 // var distance = 100 * APP.core.delta
 // APP.thing.x += distance
 },

 render() {
 // 渲染更新
 }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容