1. 程式人生 > >Unreal Engine 4 藍圖指令碼學習 新增指令碼使actor來回移動 (2)

Unreal Engine 4 藍圖指令碼學習 新增指令碼使actor來回移動 (2)

Unreal Engine 4 藍圖指令碼學習,根據《Blueprints Visual Scripting for Unreal Engine》學習整理

預設情況下,actor的Transform元件中 移動性屬性為“static”,  就是在遊戲執行時,actor是不可進行移動和操作的。所以為了實現物件 在遊戲中可移動的效果需要把這一屬性修改為 "可移動"


為了能夠改變指令碼以後所附加到的物件同樣為可移動的,需要開啟藍圖編輯器進行一些修改



為了使物體在遊戲世界中能夠移動,我們需要知道以下資訊

•  Where the cylinder currently is 圓柱體在什麼位置


•  What direction it is supposed to move in 想要移動的方向是什麼
•  How fast it is supposed to move in that direction 在那個方向上移動的速度是多少

建立速度變數和方向變數

Speed 為float型別變數

Direction為Vector型別變數


速度設定 為200.0f;


移動方向設定為 y = -10.0f;



Normalizing is a common procedure in vector math that ensures that
the vector is converted to a length of one unit, which will make it compatible with
the rest of our calculations

標準化向量(單位化向量)就是將向量值轉化到一個單位長度(向量的模為一)。以便在後序程式運算中相相容


速度值乘以一個時間值,所以選擇 float*float    時間值型別也為float


將StaticMeshComponent元件拖拽到事件圖表中  以獲取圓柱體當前的位置


GetWorldDeltaSeconds: 獲取相鄰兩幀之間的間隔時間。 這個數值受遊戲執行所在的機器效能影響的,效能高的機器時間間隔就較小,反之則較大。為了能夠 在不同效能的計算機上表現出相同的移動速度,所以會把速度值乘以DeltaSeconds。 Transform屬性中包含物件的 位置、  旋轉 和 縮放的資訊。 能過GetWorldTransform可以獲得當前物件的Transform資訊 BreakTransform 可以提取Transform中的不同部分 MakeTransform根據Location、Rotation和Scale "合成" 一個新的Transform 事件Tick每一幀都會觸發 SetActorTransform 根據傳入的Transform值設定Actor的Transform
這時運行遊戲,圓柱體只會朝著一個方向移動。 為了實現圓柱體在遊戲中來回移動,向事件圖表中新增兩個新的Direction 變數 ,選擇設定並分別設定y值為10.0  和 -10.0 Delay會根據Duration設定的秒數迴圈執行 FlipFlop會執行 A 和 B所連線的Node 中的一個,預設先執行A。 播放遊戲觀察事件圖表中資料流的走向 圓柱體在遊戲中來回移動 現在通過之前建立的藍圖指令碼可以建立更多且有相同屬性的遊戲物件