11_P95~P106TheWeaponClass
95?the weapon Class武器類
inheriting from the item class從Item類繼承
新建weapon類,從item類中繼承
如果weapon類中需要重寫item中的方法,需要將item中的函數(shù)定位為virtual ,在weapon類中的定義后面加上override
如果在weapon的類中,需要使用item中原來的方法,則需要加上Super::引用
96?Sockets接口
adding sockets and attaching actors to them添加套接字并將角色附加到它們
打開Echo的骨骼,找到左右手,可以給手骨添加socket插槽

添加預(yù)覽模型

97?Downloading Animations下載動畫
Finding Animations for equipping a sword找到裝備劍的動畫
mixamo.com
從網(wǎng)站上找到需要的動作下載,下載時候 不要帶皮膚
然后導(dǎo)入UE
98?IK Rig
Creating an IK Rig for Animation Retargeting為動畫重定向創(chuàng)建IK Rig
新建 動畫->IK綁定


選擇兩個骨骼,并對骨骼進(jìn)行IK綁定


99?IK Retargeter IK重定向
Retargeting Mixamo Animations to Echo

新建一個IK重定向器,在編輯窗口中,將兩個骨骼初始位置要調(diào)整一致,然后就可以導(dǎo)出新的動畫
100?Attaching the Sword 綁定武器
attaching the sword to the right hand socket
佩劍
把劍固定在右手的插座上
藍(lán)圖實現(xiàn):在weapon的藍(lán)圖中編輯如下:
注意 右側(cè)三個選項 需要時對齊到目標(biāo)


C++實現(xiàn)

101?Picking Up Items拾取物品
Creating an Action Mapping to Pick Up Items創(chuàng)建拾取物品的動作映射
希望實現(xiàn)按下E鍵 拾取道具
首先我們現(xiàn)在UE項目設(shè)置中,設(shè)置E按鍵的操作映射
我們吧之前在Weapon中實現(xiàn)的檢測重疊的函數(shù)移動到父類Item中,只在Weapon類中實現(xiàn)裝備Equip的效果,然后再Character類中 實現(xiàn)傳入重疊對象參數(shù)的函數(shù)
首先在Character中包含item和weapon的頭文件
在Item中包含AEchoCharacter頭文件
然后聲明EkeyPress函數(shù),并將其綁定至E鍵
實現(xiàn)EKeyPress函數(shù)的功能,傳入綁定的Mesh參數(shù)和Socket名稱給Weapon的Equip方法
然后在Item中的OnSphereOverlap中,判斷碰撞的是否為當(dāng)前角色EchoCharacter,并將Character賦值給Item的AEchoCharacter類對象
最后在Weapon中,實現(xiàn)Equip的方法
使用AttachToComponent將得到的角色Mesh,轉(zhuǎn)換規(guī)則TransformRules,綁定socket的名稱InSocketName 傳入
102?Enum for Character State角色狀態(tài)枚舉
Creating an Enum fro the Character's State為角色的狀態(tài)創(chuàng)建Enum
如何正確的在UE中聲明一個枚舉
我們需要在枚舉對象的名稱前面加上大寫的E,表示這是一個枚舉參數(shù)
建議在前面加上類型限定,如果這個枚舉只是在EchoCharacter類中使用,最好加上類限制,避免與其他類中相同的枚舉名稱重復(fù),雖然不會有問題,但是這樣可以提高可讀性
在前面加上UENUM(BlueprintType) 建立反射給UE系統(tǒng),這樣可以在藍(lán)圖中使用C++建立的枚舉類型
我們可以在枚舉中,每個標(biāo)識符的名稱前面加上縮寫以提高可讀性,比如Enum Character State 可以縮寫為ECS,并附加在標(biāo)識符名稱前面
將這個枚舉單獨寫在一個頭文件中,這樣可以在其他類里面,直接包含這個頭文件,而不是包含character的頭文件
我們在character類中新建一個const函數(shù),可以返回當(dāng)前角色的狀態(tài)
這樣在EchoAnimInstance中調(diào)用這個函數(shù),就可以獲得當(dāng)前角色的狀態(tài)
103?switching Animation Poses切換動畫姿勢
Changing Poses Based on character state根據(jù)角色狀態(tài)改變姿勢


104?Equipped Animations裝備的動畫
more animations for a Single-handed weapon單手武器的更多動畫
像P98一樣 ,給echo添加持武器跑步的姿勢
依然需要從網(wǎng)上下載跑步的姿勢,導(dǎo)入
然后用xbot創(chuàng)建的ik文件 轉(zhuǎn)換動畫
然后在echo的動畫藍(lán)圖中添加狀態(tài)

105 Linked anim graph鏈接動畫圖
Linking multiple animation blueprints鏈接多個動畫藍(lán)圖
新建一個動畫藍(lán)圖,將之前ABP_Echo中的動畫,復(fù)制到新的藍(lán)圖中
新的藍(lán)圖中,先編譯一下,可以看到缺少一些變量,找到缺失的變量,然后新建
刪除ABP_Echo中的節(jié)點,然后新建一個節(jié)點 Linked Anim 然后找到新的動畫藍(lán)圖
在新建節(jié)點的設(shè)置界面,將參數(shù)傳入,一一對應(yīng)
節(jié)點

將右上角填入傳入的對應(yīng)的參數(shù)
