讓乙個物體,每秒移動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表示式可以使材質產生深度錯覺,而不需要額外的幾何體。深度資訊。高度貼圖的值越亮,材質的 凸出 效果越明顯 當攝像機在表面上移動時,這些區域將產生視差 位移 較遠 其位移程度最小。在不改變原有模型面數的...