做C++項目的時候遇到了一個小地圖的問題,從網上找了個藍圖的思路,轉載一下。
原文:https://www.engineworld.cn/thread-3835-1-1.html
本文使用ue4提供的SceneCapture2D(場景照相機)來創造一個游戲中俯瞰的實時小地圖,並將其固定顯示在界面左上角。 此例子僅說明正交相機和UI用戶界面的基本使用。 首選,我們需要拖入一個SceneCapture2D組件到場景,
此相機默認使用的是透視投影,我們需要在它的屬性中設置投影模式為正交投影,即設置屬性中的Projection一項,選擇Projection Type為Orthographic(正交圖),
再為相機指定一個渲染目標,你可以在資源文件夾右鍵新建一個RenderTarget然后再把它綁定到相機的Texture Target屬性上,
至此,相機的設置就完畢。這時候,我們回到場景中,調整一下相機的位置和朝向,讓它朝着正下方,
可以看到,稍微移動一下相機位置后,剛創建的渲染目標(RenderTarget)上已經發生了變化,該圖就是我們需要的場景俯視圖;
接下來,我們需要將這張圖以UI界面的形式固定顯示在游戲視口(ViewPort)上,以實現類似小地圖的效果。
我們要用到widget 組件來創建UI,先右鍵新建一個widget藍圖,
然后雙擊新建的這個widget藍圖,進入UI編輯界面,在左側控件欄找到Image控件將其拖入中間的設計視圖(該視圖相當於游戲中的主視口,拖入的控件位置將以同樣的相對位置顯示在游戲視口上),然后調整一下位置到左上方,
選擇該Image控件,在右側屬性找到Brush->Image一項,將其圖像設置為我們剛創建的RenderTarget,
注意編輯完保存,好了,UI的設置也已完成,那么怎么應用我們的UI呢?很簡單,回到主場景,打開關卡藍圖,在藍圖中編寫如下邏輯,
邏輯很簡單,即創建一個widget,選擇為我們自己剛新建的widget藍圖,然后將其添加到視口。點擊運行,就可以看到效果:
可以看到,在左上角顯示了我們的場景俯視圖。並且該圖是實時刷新的。當然,在此基礎上后面可以做的還有很多,例如接下來你可以在藍圖中編寫邏輯讓正交相機的位置和主攝像機同時移動,即可以看到一個隨主角移動的小地圖等等。
后續會嘗試用C++實現