Unreal5 第三人称射击游戏 角色基础制作2
接上一篇 Unreal5 第三人稱射擊游戲 角色基礎制作1
角色蹲伏效果
上面是需要的操作映射,蹲伏實現,首先要開啟相應功能,你需要在角色移動組件上面開啟可蹲伏
蹲伏還有一些其它設置,比如蹲下角色高度,蹲下以后行走的速度
中英文截圖
這里我設置的移動速度,蹲伏時可以走出平臺,就為了防止在物體上面出現無法跳下去的問題。
接下來我們要實現蹲伏邏輯
獲取事件輸入,然后判斷當前是否處于蹲伏,這個是在角色移動插件里面獲得,然后設置相反的動作,實現點擊切換蹲伏的狀態,然后將狀態設置給角色類上面。
接下來制作蹲伏混合空間1D
混合空間制作完成后,基礎部分已經實現,接下來我們將實現動畫混合,打開動畫藍圖
進入之前實現的站立的基礎狀態里面,在這里實現對動作的混合
接下來把制作的混合空間拖入,然后使用節點,按buer混合姿勢,我們可以通過一個布爾變量,來切換站立姿勢或者蹲伏姿勢。
按照布爾變量切換使用蹲伏的動作還是正常的動作,我們需要一個布爾值,所以創建一個布爾變量
讓混合姿勢節點通過這個值進行切換
結果就這樣了,接下來,我們只需要在角色藍圖內,去修改這個值即可,接下來在之前設置的是否蹲伏那里,然后獲取動畫藍圖節點,蹲伏狀態下設置變量為true,解除蹲伏則設置回false
我看了一下,如果你在蹲伏狀態下,然后點擊解除蹲伏,會出現動畫恢復了,其實沒有接觸蹲伏狀態,我直接用回調解決這個問題來處理動畫
我們發現這是蹲伏以后,相機焦點還是原來的位置,但是角色已經蹲下了,所以,我們需要使用時間軸實現角色蹲下了以后,相機也會跟著向下靠攏。
時間軸創建
接下來要制作切換動畫,首先創建一個時間軸
在時間軸里面創建一個浮點型軌道
命好名稱,然后我們要制作0.3s的過渡,所以創建了兩個點,一個是時間是0,值也是0
另一個是時間0.3 值為1
左上兩個按鈕是可以顯示整個時間軸,而不需要我們自己拖拽顯示全部。
最后記得將長度修改為設置的時間軸的總長度,要不然雖然你的數值變換完成了,但是你的動畫會有很大空閑。
右鍵選擇第一個關鍵字,選擇自動,將會自動插值
Play 直接播放,如果你當前播放了一段,會直接在播放的點繼續播放
Play from Start 直接從初始位置播放
Stop 暫停序列幀更新
Reverse 反向播放
Reverse from End 從結束位置反向播放
Set New Time 可以設置一個新的位置 New TIme 就是一個你自己定義的時間位置
Update 序列幀更新時會每一幀都觸發
Finished 序列幀結束時觸發
Direction 獲取是正向播放還是反向播放 可以switch判斷
Half Height 我個人定義的名稱,可以獲取到當前的序列幀的值
實現相機偏移
我們要實現的是對插槽偏移的z軸進行修改
那么把彈簧臂組件從左側拖入藍圖中,首先獲取插槽偏移的值輸入Socket Offset是插槽偏移的英文。
先獲取然后再設置,因為我們只需要設置z軸,其它兩個軸直接直連,保持原來的值
接下來,我們使用插值節點,來去實現值的生成,Alpha為0時,值就是A Alpha為1時,就是用的b,中間就是兩個值插值出來的,
具體算法就是(b - a) * Alpha + a
這樣就實現了整個蹲伏的邏輯
做到這里,我將版本更新到了5.1,使用上了ue5.1的增強輸入功能,unreal 5.1 增強輸入實現請按需修改。
瞄準偏移功能
瞄準偏移是角色的頭部會跟隨著相機的朝向而修改朝向,讓它們都朝向同一個方向。這個功能實現我們會用到附加動畫。
使用附加動畫實現,我們要將所有動畫基于正向朝向進行偏移,這里我使用的一組是紅框框出來的
如果大家沒有動畫,可以去商店找免費動畫包。
接下來實現基于正向朝向的偏移實現,如何批量設置,我們需要全選資源,然后再資產操作里面找到通過屬性矩陣進行批量編輯
接下來在窗口中全選資產,在右側additiveSettings里面設置基礎姿勢動畫為正面朝向的動畫,實現了動畫基于正向動畫的偏移
如果你想單個的設置,可以在動畫頁面找到附加設置
接著創建一個瞄準偏移資產,用于制作偏移動畫,瞄準偏移英文為Aim Offset,我們可以給資產增加前綴AO
選擇好相應的骨骼,進入,會發現,它和混合空間1D最大的區別就在于,它有兩個坐標軸的,
接著給兩個坐標軸命名,這里水平取名Yaw,垂直坐標取名Pitch,這個名字取自歐拉角,不知道朋友學一下。水平和垂直范圍都是-90到90度,也就是頭部可以旋轉的范圍是180度。
設置完成后,會發現場景里面的角色消失了,附加動畫,簡而言之就是需要附加到其它動畫上面才有用,所以我們需要修改它的預覽基礎動畫,選一個idle動畫看看效果。
到這里,附加動畫就算做完了,接下來,我們需要做的就是在動畫藍圖里面實現相應的功能,實現思路是通過獲取到角色的朝向和相機的朝向,根據得到的夾角,進行對附加動畫的偏移設置。
首先求出來兩個夾角,然后限制一下范圍
為了解決頭部出現瞬移的情況,我們使用插值補間動畫過渡,R插值到 這個節點
我們可以定義當前 current 以及目標 target,然后設置時間 DeltaTime為間隔時間,是每幀的間隔時間, Interp Speed 為過渡的速度,0為無過渡,值越大越平滑。
上圖創建了兩個變量 Pitch 和Yaw 用于存儲當前偏移量,也是作為設置附加動畫的值,最后,我們還需要吧插值的結果賦值給這兩個變量,這兩個變量就實現了針對于相機和角色的偏移,而跟隨偏移。
上面我們在動畫藍圖的事件圖表中,實現了瞄準偏移節點的值的獲取。
最后,我們需要將制作的瞄準偏移動畫加入到基礎動畫流程中,實現動畫的混合,賦值即可
還有一個問題,前面我做的瞄準偏移節點竟然做成了混合空間節點,結果就出問題了,大家也要注意。
這樣制作完成以后,會發現,相機移動到角色正面時,角色始終不會看向相機,接下來,我們實現一下相機移動到正面,角色的臉朝向前方。
經過查看發現,相機在角色正前方的兩個Z值夾角差值為-90到-180度 和 90到180度,那么我們直接取它的絕對值,用于判斷相機是否在正前方
獲得了布爾變量,我們可以通過分支進行判斷,如果不大于100,則還是按照之前默認處理,如果相機在正前方,那么要讓臉朝向前方,這個實現的思路就是,讓當前的Yaw值也插值到0(0就是Yaw左右方向默認朝向前方的值)。如果需要Pitch值,也可以這么處理。
但是,在韓國游戲里面,他們的處理方式,相機在前方時,角色臉會朝向相機,我接下來實現一下。
首先,進行一個布爾判斷,就是相機和朝向差值到了多少以后,切換為臉部朝向相機。我們只需要判斷插值的Yaw即可
在正面時,我們要求出相機屁股的朝向,我通過打印發現,相機轉向的范圍為 Yaw 是0到360度,Pitch 是 0到90 和270到360。Yaw的反向值可以通過加180求出,Pitch可以取負值或者用360減去當前值。
最后,我們使用這個反向旋轉體和角色旋轉體求差值,繼續之前的步驟即可,下面是當前功能的全部代碼。
整理
最后,整理一下節點,選中所有射擊偏移相關的函數,折疊到函數
可以直接將這一堆節點生成一個函數,進入函數,會發現這兩個值其實都是引用的一個值,卻給了兩個參數,我們要合并到一起。按住ctrl鍵,將Self 3的節點拖拽到Self 2,
然后選中節點在右側改名,
點擊編譯,編譯以后外部調用的地方會發生報錯,這里我們需要刷新節點來解決報錯
問題解決,基礎的動作和移動功能已完成,后面將更新角色的射擊功能。
腳步聲的制作
腳步聲的制作其實很簡單如果不區分地面材質的話,直接在移動動畫上面播放音效即可。
但我們要做的就復雜一些,要根據不同的地面材質播放不同的音效,在草地上面播放腳踩草地的聲音,在水泥地上面播放腳踩水泥地的聲音。
大概思路是,在動畫中腳落地的地方觸發通知,通知去觸發角色的事件,事件里面在腳底板下面發射射線檢測地板材質,然后根據相應的材質去播放音效。
那么先來第一步,創建通知以及事件,先在角色藍圖中創建兩個事件,用于邏輯處理
然后創建兩個通知,觸發對應的兩個事件,兩個通知的不同地方就是左右腳事件
通知創建完成以后,記得在每個移動的動畫里面動畫落腳的地方添加上動畫通知
設置完成以后,我們需要實現射線拾取功能,首先在角色身上創建兩個箭頭組件,它兩個只作為點的拾取用,一個插槽旋轉左腳,一個選擇右腳,到時候我們使用它們兩個場景坐標作為拾取地面材質的位置。
創建一個播放腳步聲的函數,在函數內,創建一個布爾變量傳入,來設置是左腳還是右腳
事件調用,一個打鉤,一個不打鉤即可
接下來是通過射線去拾取地面,
紅框地方是獲取到箭頭組件的世界位置,然后位置向下獲取z軸小于10(也就是10厘米),這樣可以獲取一根垂直向下的射線,去拾取命中的對象。
先判斷是否拾取到了對象,然后獲取表面類型
最后根據表面類型,調用不同的聲音
總結
以上是生活随笔為你收集整理的Unreal5 第三人称射击游戏 角色基础制作2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch:data读取出错:Run
- 下一篇: 如何制作有小颗粒的背景图片