Head Aim/Look At 頭部瞄準
![](https://static.wixstatic.com/media/204c38_eb786032ec6c469b9511de6e22d3037a~mv2.png/v1/fill/w_980,h_545,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/204c38_eb786032ec6c469b9511de6e22d3037a~mv2.png)
新增 控制器
![](https://static.wixstatic.com/media/204c38_a8d9a3029f1846359c2e17e9c4ff9274~mv2.png/v1/fill/w_224,h_34,al_c,q_85,enc_auto/204c38_a8d9a3029f1846359c2e17e9c4ff9274~mv2.png)
大致位於在頭部前面
![](https://static.wixstatic.com/media/204c38_d513d7cb0ef74e3b8c89c37677ac7be9~mv2.png/v1/fill/w_195,h_121,al_c,q_85,enc_auto/204c38_d513d7cb0ef74e3b8c89c37677ac7be9~mv2.png)
使用 Aim 節點來製作頭部的瞄準
為了讓瞄準時候身體更自然,這邊分別有設定 Head, neck, spine
將Aim控制器的Traslation為個別的Target,Weight的數值根據角色自行調整
*切記要從身體到頭部連結過去,而不是反過來,會出問題
![](https://static.wixstatic.com/media/204c38_a3b1adff67ee432ca66539ce1c590df7~mv2.png/v1/fill/w_554,h_304,al_c,q_85,enc_auto/204c38_a3b1adff67ee432ca66539ce1c590df7~mv2.png)
這時拖動Aim控制器,身體至頭部的地方都會跟著動
這次要使用變數讓外面的物體可以跟著有互動
新增屬性變數 : LocationAt Location 為Vector,眼睛要打開,後續能使用
![](https://static.wixstatic.com/media/204c38_2645f7ae1aea48df960f2910a181a3fd~mv2.png/v1/fill/w_370,h_29,al_c,q_85,enc_auto/204c38_2645f7ae1aea48df960f2910a181a3fd~mv2.png)
得到LocationAtLocation的World值,分別連結到個的Aim的Target
![](https://static.wixstatic.com/media/204c38_d11c1ea8ca46400ca35388dac78a3044~mv2.png/v1/fill/w_554,h_261,al_c,q_85,enc_auto/204c38_d11c1ea8ca46400ca35388dac78a3044~mv2.png)
但這時候會看到 Control Rig 的小面板人物不正常
![](https://static.wixstatic.com/media/204c38_1909a10877094db690e89f4b7db1a957~mv2.png/v1/fill/w_218,h_213,al_c,q_85,enc_auto/204c38_1909a10877094db690e89f4b7db1a957~mv2.png)
為了讓Control Rig面板正確
在Variables 新增變數 : IsLookAt 為Boolean,眼睛要打開,後續能使用
![](https://static.wixstatic.com/media/204c38_221342473361498a89a69b246c14828c~mv2.png/v1/fill/w_389,h_29,al_c,q_85,enc_auto/204c38_221342473361498a89a69b246c14828c~mv2.png)
做相關的判定是否有在看物體,如果有就已LookAtLocation的值,如果沒有就預設我們自己創的控制器的值
![](https://static.wixstatic.com/media/204c38_a36ea13be4f748ab8689cdcf2b88e818~mv2.png/v1/fill/w_330,h_293,al_c,q_85,enc_auto/204c38_a36ea13be4f748ab8689cdcf2b88e818~mv2.png)
Control Rig小面板的人物就正常了
![](https://static.wixstatic.com/media/204c38_5ffac1fffc324473b63cb357abce9ec2~mv2.png/v1/fill/w_200,h_194,al_c,q_85,enc_auto/204c38_5ffac1fffc324473b63cb357abce9ec2~mv2.png)
開始針對 物體的Blue print 設定
在Content Drawer 新增 物體的BP Actor
![](https://static.wixstatic.com/media/204c38_76d45967ccb0474c83b8843bc7fe7152~mv2.png/v1/fill/w_297,h_217,al_c,q_85,enc_auto/204c38_76d45967ccb0474c83b8843bc7fe7152~mv2.png)
![](https://static.wixstatic.com/media/204c38_987221aaf3374fcd833f567b3ad5b30c~mv2.png/v1/fill/w_384,h_207,al_c,q_85,enc_auto/204c38_987221aaf3374fcd833f567b3ad5b30c~mv2.png)
先加入Collision,這邊使用Sphere collision,在加Mesh,這邊也用預設的Sphere,調整到要的位置
![](https://static.wixstatic.com/media/204c38_68179612e45f415db6a75b7face798b6~mv2.png/v1/fill/w_298,h_185,al_c,q_85,enc_auto/204c38_68179612e45f415db6a75b7face798b6~mv2.png)
將Sphere collision 的sphere Radius 調一個大小,當角色進入這個區域,就會驅動某事件使用
![](https://static.wixstatic.com/media/204c38_3f65ede3fbed48d8b07db8f2fd02bed1~mv2.png/v1/fill/w_268,h_201,al_c,q_85,enc_auto/204c38_3f65ede3fbed48d8b07db8f2fd02bed1~mv2.png)
在Sphere collision 的Events,加入On Component Begin Overlap和 On Component End Overlap
到角色的 BP 裡面新增屬性
LookAtObj - 這是要選擇自己剛剛新增的物體BP Actor
![](https://static.wixstatic.com/media/204c38_6043f66e0ba648ec8c2fef5e1faa8e83~mv2.png/v1/fill/w_291,h_170,al_c,q_85,enc_auto/204c38_6043f66e0ba648ec8c2fef5e1faa8e83~mv2.png)
到物體的BP Actor Event Graph 設定
如果角色進入球體碰撞那就讓角色正在看物體,將IsLookAt打勾,然後LookAtObj就是球體自己,相反則是沒有IsLookAt
![](https://static.wixstatic.com/media/204c38_573e714005814ae1a41719565dd7cd7a~mv2.png/v1/fill/w_554,h_306,al_c,q_85,enc_auto/204c38_573e714005814ae1a41719565dd7cd7a~mv2.png)
打開 ABP_XXXXXX 檔案
首先 Control Rig 先將剛剛Aim的變數打開
![](https://static.wixstatic.com/media/204c38_178a26b026c14503b18214c38a1a40b6~mv2.png/v1/fill/w_553,h_304,al_c,q_85,enc_auto/204c38_178a26b026c14503b18214c38a1a40b6~mv2.png)
在ABP的 Event Graph做參數設定
在一開始的時候先有角色的資料,然後再使用Promote,這樣就可以重複使用
![](https://static.wixstatic.com/media/204c38_a134e3cd96524c98b7bdcb2f483dca85~mv2.png/v1/fill/w_554,h_133,al_c,q_85,enc_auto/204c38_a134e3cd96524c98b7bdcb2f483dca85~mv2.png)
將剛剛BP角色的變量分別放進去ABP,且用Promote的值讓他得到。
IS Look At 使用branch方式去判定,如果就進行LookatLocation
這個LookAtLocation就是角色看到的物體的worldLocation
![](https://static.wixstatic.com/media/204c38_55a89f8d07be4e05a73d38ca9d0773da~mv2.png/v1/fill/w_553,h_125,al_c,q_85,enc_auto/204c38_55a89f8d07be4e05a73d38ca9d0773da~mv2.png)
回到AnimGraph
將Look at location 和Is look at 連到Control Rig 上面
![](https://static.wixstatic.com/media/204c38_cb106a3b926a48ff9ae35c91d14d5094~mv2.png/v1/fill/w_554,h_174,al_c,q_85,enc_auto/204c38_cb106a3b926a48ff9ae35c91d14d5094~mv2.png)
使用Blend Pose By Boolean 來設定是否有在察看
![](https://static.wixstatic.com/media/204c38_eddb707cfc4245b4a51cbff8984acb60~mv2.png/v1/fill/w_554,h_150,al_c,q_85,enc_auto/204c38_eddb707cfc4245b4a51cbff8984acb60~mv2.png)
角色是有跟著物體互動,但是頭部的轉動不正常,需要限制角度
使用角色得到Actor location 和物體的world Location尋找看到的Rotation值,Rotation值和角色Actor Rotation值用Delta(rotation)來得到Z值。因頭部左右轉是Z值。
在新增新屬性: Look At Offset,設定為85。依據角色調整
如果值小於設定的值那就是在看的範圍內,並Promote 值
*這裡使用ABS是避免有負值,讓負值都傳回正值
![](https://static.wixstatic.com/media/204c38_96e335dd74564afbb1deb88f1f2d8535~mv2.png/v1/fill/w_553,h_243,al_c,q_85,enc_auto/204c38_96e335dd74564afbb1deb88f1f2d8535~mv2.png)
回到 AnimGraph
使用AND來判斷。 如果有在看物體且又在範圍內,則進行True pose動作
![](https://static.wixstatic.com/media/204c38_8efec450f48c473d878d2f1f93a419a3~mv2.png/v1/fill/w_554,h_317,al_c,q_85,enc_auto/204c38_8efec450f48c473d878d2f1f93a419a3~mv2.png)
這時會發現ABP的小面板人物,站姿不穩,頭部歪,而且遊戲裡面的角色也是錯誤,不管拉幾次的BP角色一樣有問題
這邊要額外在設定Offset location
首先回到 角色的BP設定
![](https://static.wixstatic.com/media/204c38_2b8788ea6f54485a9214a570fbae2c7a~mv2.png/v1/fill/w_216,h_240,al_c,q_85,enc_auto/204c38_2b8788ea6f54485a9214a570fbae2c7a~mv2.png)
在Viewport設定 假的物體在角色前面
讓物體不要出現在遊戲裡面
選擇物體在屬性面板裡找到 Hidden in Game 打開,且不要有Collision
![](https://static.wixstatic.com/media/204c38_5a843cda339141b8807cbfdabf3a9c0e~mv2.png/v1/fill/w_492,h_215,al_c,q_85,enc_auto/204c38_5a843cda339141b8807cbfdabf3a9c0e~mv2.png)
到Event Graph
讓它每一楨都得到這物體的World Location,Promote variable
![](https://static.wixstatic.com/media/204c38_463c60ab17d747bdbcc460e1b5debf8c~mv2.png/v1/fill/w_554,h_170,al_c,q_85,enc_auto/204c38_463c60ab17d747bdbcc460e1b5debf8c~mv2.png)
回到ABP_XXXXX,Event Graph
BP角色的AimOffsetLocation Promote變數給ABP使用
![](https://static.wixstatic.com/media/204c38_da6db198717a489cbe94d2235099097b~mv2.png/v1/fill/w_386,h_211,al_c,q_85,enc_auto/204c38_da6db198717a489cbe94d2235099097b~mv2.png)
將剛剛的變數放置在 AnimGraph沒看到的location值,那角色就正常了
![](https://static.wixstatic.com/media/204c38_47e3a922c12d4b63b3e9a12af0ddeedd~mv2.png/v1/fill/w_554,h_260,al_c,q_85,enc_auto/204c38_47e3a922c12d4b63b3e9a12af0ddeedd~mv2.png)
整個專案和文件下載 / 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