UE4 DeltaTime(時間增量)

2022-09-18 14:30:18 字數 1927 閱讀 4854

​ 讓乙個物體,每秒移動10公尺,**如下

我們假設遊戲執行時,1秒是60幀。—— 那就是說60個畫面,刷!刷!刷!執行完,耗時1秒。(思考:打遊戲時fps值是什麼?)

如果電腦,或者手機幀數沒有到60幀,時而30幀,時而50幀

那麼就會出現,有時候1秒移動了500公尺 有時候300公尺,總之每秒都不一樣

所以牛逼的前輩們就想到了解決辦法,從而引入了增量時間的概念

增量時間是實時變動的,而且每一幀都在變動

1秒30幀,那增量時間就是 1/30 秒

1秒60幀,那增量時間就是 1/60 秒

1秒166幀,那增量時間就是 1/166 秒

這樣的設計理念,就保證了無論幀率是多是少,我們讓物體1秒移動10公尺,最後1秒移動的就一定是10公尺

公式:路程=速度*時間

10公尺=1秒 * 10公尺/秒

10公尺=(1/60 * 60) *10公尺/秒

10公尺=(1/166 * 166) *10公尺/秒

10公尺=(增量時間 * 1秒總幀數) *10公尺/秒

重點:

1秒內update執行的次數,就是1秒內執行的總幀數

所以我們只需要寫上transform.translate(0, 0, time.deltatime \* 10)這乙個函式

update執行了1次,transform.translate(0, 0, 1/60 \* 10)執行一次,物體移動了1/6公尺

update1秒內執行了60次,就是transform.translate(0, 0, time.deltatime \* 10)乘以60次

相當於 =(每幀時間1/60 * 速度 * 60)=10公尺

update1秒內執行了n次,就是transform.translate(0, 0, time.deltatime \* 10)乘以n次

相當於 =(每幀時間1/n * 速度 * n)=10公尺

而大家都知道 update 函式的呼叫,是很快的。在我們假定的情況下,這1秒就會被呼叫60次

而此時我們的**transform.translate(0, 0, 10)被執行60次

每執行一次,物體就會移動10公尺。60*10=600公尺,這完全違背了我們讓物體每秒移動10公尺的初衷

公式:路程=速度*時間

update執行了1次,transform.translate(0, 0, 10)執行一次,物體就已經移動了10公尺

update1秒內執行了60次,就是transform.translate(0, 0,10)乘以60次

相當於 =(10 * 60)=600公尺

update1秒內執行了n次,就是transform.translate(0, 0, 10)乘以n次

相當於 =(10 * n)=10n公尺

UE4時間相關函式

在進行遊戲構建時,我們通常會用到和時間相關的邏輯,在此稍微做下小結。當前ue4版本為4.15。基本上遊戲引擎都是以tick為中心運轉的,表現在玩家面前就是幀率了,ue4也是如此。在藍圖中要使用tick的話只要從灰色的tick上拖出呼叫就可以了,但是在c 中使用的時候需要注意的是,在預設的情況下,ti...

ue4玻璃材質 UE4 材質

本文中,我們將首先討論基於物理的渲染,什麼是材質域,什麼是材質,什麼是材質例項,什麼是主材質,我們將討論材質的一些建議和禁忌。最後,我們將了解一些材質概念,你可以將其用於各類專案中的材質。pbr 表示基於物理的渲染,基於物理的渲染意味著我們根據現實模擬光線,而不是根據主觀想法模擬光線。光線的最終效果...

ue4材質節點大全 UE4 材質

凹凸貼圖偏移 bumpoffset 是虛幻引擎4術語,就是通常所謂的 視差貼圖 bumpoffset表示式可以使材質產生深度錯覺,而不需要額外的幾何體。深度資訊。高度貼圖的值越亮,材質的 凸出 效果越明顯 當攝像機在表面上移動時,這些區域將產生視差 位移 較遠 其位移程度最小。在不改變原有模型面數的...