Head Aim/Look At 頭部瞄準
新增 控制器
大致位於在頭部前面
使用 Aim 節點來製作頭部的瞄準
為了讓瞄準時候身體更自然,這邊分別有設定 Head, neck, spine
將Aim控制器的Traslation為個別的Target,Weight的數值根據角色自行調整
*切記要從身體到頭部連結過去,而不是反過來,會出問題
這時拖動Aim控制器,身體至頭部的地方都會跟著動
這次要使用變數讓外面的物體可以跟著有互動
新增屬性變數 : LocationAt Location 為Vector,眼睛要打開,後續能使用
得到LocationAtLocation的World值,分別連結到個的Aim的Target
但這時候會看到 Control Rig 的小面板人物不正常
為了讓Control Rig面板正確
在Variables 新增變數 : IsLookAt 為Boolean,眼睛要打開,後續能使用
做相關的判定是否有在看物體,如果有就已LookAtLocation的值,如果沒有就預設我們自己創的控制器的值
Control Rig小面板的人物就正常了
開始針對 物體的Blue print 設定
在Content Drawer 新增 物體的BP Actor
先加入Collision,這邊使用Sphere collision,在加Mesh,這邊也用預設的Sphere,調整到要的位置
將Sphere collision 的sphere Radius 調一個大小,當角色進入這個區域,就會驅動某事件使用
在Sphere collision 的Events,加入On Component Begin Overlap和 On Component End Overlap
到角色的 BP 裡面新增屬性
LookAtObj - 這是要選擇自己剛剛新增的物體BP Actor
到物體的BP Actor Event Graph 設定
如果角色進入球體碰撞那就讓角色正在看物體,將IsLookAt打勾,然後LookAtObj就是球體自己,相反則是沒有IsLookAt
打開 ABP_XXXXXX 檔案
首先 Control Rig 先將剛剛Aim的變數打開
在ABP的 Event Graph做參數設定
在一開始的時候先有角色的資料,然後再使用Promote,這樣就可以重複使用
將剛剛BP角色的變量分別放進去ABP,且用Promote的值讓他得到。
IS Look At 使用branch方式去判定,如果就進行LookatLocation
這個LookAtLocation就是角色看到的物體的worldLocation
回到AnimGraph
將Look at location 和Is look at 連到Control Rig 上面
使用Blend Pose By Boolean 來設定是否有在察看
角色是有跟著物體互動,但是頭部的轉動不正常,需要限制角度
使用角色得到Actor location 和物體的world Location尋找看到的Rotation值,Rotation值和角色Actor Rotation值用Delta(rotation)來得到Z值。因頭部左右轉是Z值。
在新增新屬性: Look At Offset,設定為85。依據角色調整
如果值小於設定的值那就是在看的範圍內,並Promote 值
*這裡使用ABS是避免有負值,讓負值都傳回正值
回到 AnimGraph
使用AND來判斷。 如果有在看物體且又在範圍內,則進行True pose動作
這時會發現ABP的小面板人物,站姿不穩,頭部歪,而且遊戲裡面的角色也是錯誤,不管拉幾次的BP角色一樣有問題
這邊要額外在設定Offset location
首先回到 角色的BP設定
在Viewport設定 假的物體在角色前面
讓物體不要出現在遊戲裡面
選擇物體在屬性面板裡找到 Hidden in Game 打開,且不要有Collision
到Event Graph
讓它每一楨都得到這物體的World Location,Promote variable
回到ABP_XXXXX,Event Graph
BP角色的AimOffsetLocation Promote變數給ABP使用
將剛剛的變數放置在 AnimGraph沒看到的location值,那角色就正常了
整個專案和文件下載 / Full projects and Documents Download: https://www.patreon.com/posts/control-rig-5-2-89966351?utm_medium=clipboard_copy&utm_source=copyLink&utm_campaign=postshare_creator&utm_content=join_link
Comments