, 時間倒流的實現大概思路就是在一個特定的時候每幀記錄這個物體的Transform並存入數組中,再觸發一個時間從數組最后一個往前設置Transform。
第一步首先我創建一個Actor類,並添加組件Cube(一個模型並把它設為根組件)和一個Box Collision(檢測碰撞用的), Cube的碰撞設置為BlackAll,碰撞體默認碰撞就行。
第二步在EventBeginPlay后面讓Cube開啟物理或者直接在細節里物理勾上也可以。
第三步在EventTick后面,首先判斷是否開啟記錄位置IsOpen? ,如果為真就開啟物理(保險一點,有時會有些Bug),之后創建一個Transform類型的數組,
獲取Cube的世界Transform存入數組,延遲5秒把數組長度存到一個整型變量當中,並把bool值變量設為假。
第四步如果IsOpen為假就Delay0.0002秒后判斷這個數組長度的變量Length是否為0,如果為真就把數組清空並把物理關閉。
我這個Return是一個開關 ,按鍵后它才會實現時間倒流。
第五步如果Return為真就把物理關閉(時間倒退過程開啟物理會影響效果),之后獲取數組長度的變量Length-1設置給Length(這樣就會從最后一個來讀取數值了)最后設置這個Cube的Transform,獲取TransForm數組然后Get
,Get的值是減1以后的Length。
這樣就基本實現了功能,觸發只需要把IsOpen變量給設為真,我是用第一人稱模板的子彈來觸發的 然后設置個按鍵就可以出現效果了。
最后說一句,這是我第一次分享自己的筆記,可能很亂,大家將就看,有啥不理解問我。