文章導讀
? ? ? ? 2D像素主要痛點是,2D平面的角色,在3D場景中移動時旋轉的控制,即面片要永遠面朝鏡頭,同時允許角色四周移動,并切換對應朝向,AI也是使用行為樹控制AI行走的邏輯和玩家操作邏輯又有不同
準備內容:在項目設置,引擎-渲染 中,將抗鋸齒方式 改為 快速模擬抗鋸齒FXAA,這樣 像素角色不會失真,關閉動態模糊
一,角色藍圖準備
1.做的是像素角色,所以應用到了paper2D插件,創建角色藍圖,使用PaperCharacter類
2.在角色藍圖中添加【彈簧臂】和【攝像機】組件,攝像機使用電影攝像機組件,放在彈簧臂子級
? ? 彈簧臂目標臂長設置為1200,旋轉Y:-20,旋轉Z:-90
3.并在Sprite組件中,右側細節面板設置已經制作好的 源圖像序列視圖,【待機動作】
4.左側組件列表中,選中藍圖組件列表中最頂部的自身,在右側細節面板中,取消勾選使用控制旋轉Yaw
這里是因為,用的2D素材在場景中移動,不需要控制旋轉,鏡頭朝向一直是固定的
二.創建移動輸入
1.操作輸入,我們使用UE5.1新增的增強輸入(軸映射輸入法在默認UE5.1版本后,官方默認想棄用的)在內容瀏覽器中,右鍵創建,2個文件【輸入操作】,【輸入映射情境】
2.我們將【輸入操作】,改名為【IA_移動】,打開該文件,將值類型,設置為【Axis2D】
3.將【輸入映射情境】改名為【 IMC_默認輸入】,并打開。添加映射,選中【IA_移動】,添加鍵盤映射
4.在角色藍圖中新增函數【創建增強輸入】,并在函數內添加新建的輸入映射,并在角色藍圖【事件圖表】事件開始運行時引用
5.角色移動完整藍圖
上面是整體藍圖,下面拆解講一下,因為怕直接拆家的話,有人可能會遺漏引腳連線,所以先放整圖
5.1 X軸方向控制
這里就是通過按鍵A和D的時候 向左右移動,可能有人會問,既然是向前向量,為什么是控制左右,這里就要回到我們2D角色的說明
因為這里2D角色,如果純2D游戲,那角色向前向后,其實在屏幕上表現就是 左右移動(卷軸橫版游戲),所以在此藍圖上,我們將左右移動作的X軸用向前向量獲取,然后添加到移動中
新建一個枚舉值文件,添加3個枚舉,待機,向左移動,向右移動
新增自定義事件,并重命名為【設置行動狀態】
在【細節】面板中,添加一個【輸入】命名為【移動狀態枚舉】,類型選擇為我們新建的枚舉文件
將自定義事件中,的移動狀態枚舉,添加為變量,并將該變量的【復制】項,選擇為 RepNotify,選擇完后,會自動出現一個OnRep開頭的函數
在On Rep函數中,我們直接使用Switch節點,來控制3個狀態時角色的旋轉 和播放的動畫(如果有走路和跑步兩種,這里可以通過枚舉值再通過速度,來判斷播放跑步動畫,還是走路動畫)
回到【事件圖表】,按鍵釋放時,執行事件【設置行動狀態】為【待機】,x軸大于0時,執行【向左移動】,小于0則執行【向右移動】
總結:到這里2D平面角色,移動控制相關邏輯就結束了,可在場景中進行控制,其實整體邏輯和3D角色差不多,就多了一步控制角色面向左右翻轉,且在上下移動的時候,角色不會被90度翻轉,導致因為是面片而看不見角色。