Unity Final IK 插件獲取
https://assetstore.unity.com/packages/tools/animation/final-ik-14290

免费学习版: https://pan.baidu.com/s/1ooqwjYT9E0YD-SAfgOD6GQ?pwd=sdjr 提取码: sdjr
Unity Final IK 簡介及關鍵腳本 FullBodyBipedIK 講解
預覽查看效果
- 導入 Final IK SDK,導入人形模型
- 給人形模型根節點新增 FullBodyBipedIK 腳本
- 設定此腳本的左手權重為 1,在 Scene 視圖會看到藍色方塊,運行遊戲,拖曳它即可看到效果。

FullBodyBipedIK 屬性講解
全局屬性
- FixTransform: 刷新 IK 位置(不勾選 Animator 和該選項時,人物像太空運動。)

- Reference: 裡面為骨骼節點,範例作用,你可以取得該節點上的碰撞,作為槍擊判斷等。
- Weight: 權重,此地方權重為整體權重。
- Iterations: 更新其他節點的頻率。當你不用時就可改為0,這樣拖動手,只有手動,手臂身體等就不跟著刷新去運動了。
Body

- UseThighs: 使用大腿肌肉,預設勾選,動作會緩衝更柔和,不勾選和勾選效果如下。
- Mapping:
- Spine: 是腹部(胸腔)那一塊位置。權重應為 1,這樣旋轉拉伸時,胸腹會跟著身體動,胸腹不會因為其他位置變化而變形了。
- MaintainHeadRot: 頭部預設動畫佔的權重。為 0 時,頭部不跟著其他位置動,保持原動畫。 1 時,很柔和了

Arm

- Chain:
- pull: 左右手,一個在前,一個在後(向前向後都到極限,類似伸直手臂狀態)。身體在中間。誰的 Pull 越大,整個身體越拉向誰(當然會跟著變形匹配動作),接近誰。
- Reach: 左右手,一個在前,一個在後(向前向後都到極限,類似伸直手臂狀態)。胸腔部分在中間。誰的 Reach 越大,胸腔越拉向誰,接近誰。
- Push: 左右手,一個在前,一個在後(蜷縮著手臂,類似冷,螳螂手半縮在胸前一樣)。胸腔部分在中間。誰的 Push 越大,身體就被推向後方。

- Smoothing: 平滑運動的方式
- BendGoal: 手肘(大臂和小臂關節處)外翻朝向。新建一個空物體,賦值給它。控制這個空物體的位置,手肘指向這個位置。
- MappingWeight: 父骨骼權重。預設 1,當為 0 時,拖曳手,手臂不會反向計算運動,只會筆直運動,身體其他位置會計算運動。
- MaintainHandRot: 手部預設動畫佔的權重。為 0 時,全由 IK 計算動畫,很柔和。當為 1 時,是預設動畫(前提手臂處的權重要為 0) 有點暴力。
代碼控制
- 總權重
GetComponent<FullBodyBipedIK>().solver.SetIKPositionWeight(1); - 權重: Pull、Reach:設定左右 Arm、左右腿
GetComponent<FullBodyBipedIK>().solver.SetChainWeights(FullBodyBipedChain.LeftArm,1, 1); - 權重: Body 位置、左右手、腳、肩膀、大腿
Thigh GetComponent<FullBodyBipedIK>().solver.SetEffectorWeights(FullBodyBipedEffector.Body,1, 1);
Unity Final IK 腳貼合平面 GrounderFBBIK 介紹
本節目標
讓人物腳貼合地面,下方是本節的效果示範。

GrounderFBBIK 原理介紹
此腳本利用射線檢測,判斷前方障礙物高度,若腳能放上去(放上去的高度參數自行設定),則匹配高度。
實現步驟
此腳本利用射線檢測,判斷前方障礙物高度,若腳在碰撞、運動條件等事先配置好的前提下,先給人物加入 FullBodyBipedIK ,再加入 GrounderFBBIK。
能放上去(放上去的高度參數自行設定),則匹配高度。

相關屬性講解

Solver屬性欄:
- Layers:偵測障礙物的層級。
- MaxStep:腳能抬到障礙物的最大高度(低於這個高度,腳往上抬。高於,則不抬)。
- HeightOffset: 腳抬到障礙物上後,再向上偏移的距離。
- FootSpeed: 腳到達障礙物上方的速度。
- FootRadius: 腳的碰撞偵測大小。該腳本是利用該圓球碰撞器發射射線,以偵測障礙物。
- Prediction: 腳跨越的效果。值低的話會有穿模效果,高則沒有。

- FootRotationWeight:腳在斜面上時旋轉偏移權重。
- FootRotationSpeed:腳適配到那個斜面時的速度。
- MaxFootRotation:在斜面時最大旋轉角度。

- RotateSolver:人物在斜面走的能力。 (原先我們只在地面走,現在是遊戲中人物在牆上走,腳貼合斜面)

- PelvisSpeed:盆骨上下位移的速度。因為當腳移動時,盆骨也會跟著上下移動。
- PelvisDamper:盆骨位移緩衝值,上下移動會柔和。
- RootSphereCast:腳射線偵測的距離。若專案中無法偵測到前方障礙物,可設定的大一點。
- Quality:設定 GrounderFBBIK 的質量
- Spine:設定腳部運動,對身體其他部位的影響,使運動看起來更自然。
Unity Final IK 匹配目標 FullBodyBipedIK 與瞄準目標 AimIK
匹配目標 FullBodyBipedIK
FullBodyBipedIK的作用
實現將身體某部位,配對到某個位置。
例如手持槍 Idle 動畫,原先動畫手沒有握到槍托,現在我們透過這個腳本,讓手匹配到槍托位置。
要修改的原動畫
原動畫手和槍匹配的太好了,我們就把槍旋轉一下吧,忽略右手,做下左手匹配到當前槍的位置。

實現步驟
人物添加 FullBodyBipedIK 。
- 左手要放在武器上的位置,(槍物體下方)創造一個空物體。
將 FullBodyBipedIK 的左手權重調至 1,將空物體賦值給 Target,調整空物體的位置,即可看到手跟著過去了。

瞄準目標 AimIK
AimIK的作用
讓某部位,瞄準某位置。
例如,讓拿槍的人,瞄準前面的敵人。
原效果展示及目標效果
球代表了敵人。
目標1:希望在球移動過程中,人物的槍不斷瞄準球。
目標2:希望一隻手瞄準,一隻手做別的。

AimIK 屬性講解

- Target:要瞄準的目標
- PoleTarget:人物的左右傾斜,(放在人物物體裡面)實現讓人物左右傾斜
- AimTransform:一個物體的方向,比如說槍口指向的方向
- Axis:用 AimTransform 的哪個軸對準目標。哪個軸對準,哪個值就設定為 1。
軸的方向顏色與 Scene 視圖右上角軸方向顏色一致,這樣你就知道物體哪個軸是哪個方向了
- PoleAxis:作用類似Axis,控制的是PoleTarget
- ClamWeight:瞄準權重。建議值0.5,這樣當人物旋轉180度時,瞄準就不會跟過去了,也可自己調這個值。
因為身體不會轉動,計算手跟過去也轉不過去;實際項目上會增加當目標旋轉 45 度時,我們身子就跟過去了。
- ClamSmoothing:瞄準移動的緩衝值。
- 2D:也就是 2D 遊戲,這時瞄準就只旋轉 Y、Z 軸了。
- Tolerance:瞄準偏差值。當小於這個值時,位置計算就停止了。值大時節省性能。
- MaxIterations:最大迭代,值小一點節省效能。
實現步驟
目標 1:希望在球移動過程中,人物的槍不斷瞄準球。
為人物添加 AimIK(此目標不依賴 FullBodyBipedIK )。
按圖示配置:
- 目標點。
- PoleTarget。
- 指向方向。

- 將盆骨到胸腔的三根骨骼配置到 Bones。
我這邊是 Hips下的 Spine_01、02、03。這三根骨骼剛好在胸腹位置。 Hips 也是骨骼,但位置太靠下了。
將骨骼填進去後,會自動出現這條線。 (當然,也可以把手臂手的骨骼配置進去,這樣瞄準會比較自然)

運行效果。

目標 2: 希望一隻手瞄準,一隻手做別的。
- 為人物添加 AimIK(不依賴 FullBodyBipedIK )。
- 給 AimIK 配置好目標點、PoleTarget、指向方向。
骨骼只配置肩膀到手的骨骼。
- 這時拖曳球,就看到只有右手去瞄準了,左手就可以幹別的了;例如配合 FullBodyBipedIK ,左手去實現別的功能。
上面我們用 FullBodyBipedIK 實現了左手匹配槍位置,這兒不需要了,別忘了在這裡 FullBodyBipedIK 左手權重改為 0。

Unity Final IK 手指位置適配 HandPoser
本節目標
讓手指擺出不同的動作,比如握槍柄。
不同位置,不同樣子的槍柄。

腳本功能講解
HandPoser

- PoseRoot: 賦值的為參考的部分。根據該參考的部位,調整自身對應部分。
通俗點講,自身物體為 A,複製一份自身物體為 B(不含 HandPoser),將 B 賦值到 A 的 PoseRoot。
B 以後的狀態,就是 A 的參考狀態了。
改變 B 的屬性,例如旋轉,A 對應物體的屬性,也會跟著改變。 (現在只測試出改變 B 的旋轉可以,位移不行)
InteractionTarget
畫出手部骨骼節點,方便你的調整。
開始適應手指位置
我們的目標位置
我們的目標是將下面的右手位置適配到把手上面去。

小提示:可鎖定新增了 InteractionTarget 的 B 物體面板,Scene 視窗就一直顯示 B 的骨骼了。
適配的思路
要達成目標:指頭貼合到槍托,要操作的內容分為兩部分:
- 手位置先移動到槍托那兒,旋轉到適當角度。
- 指頭旋轉抓住槍托。
3 FullBodyBipedIK 確定手部的位置
手位置移動、旋轉,用 FullBodyBipedIK 去做。
4 完成手指抓住槍托
複製新的手
將要變更旋轉屬性的骨骼 A(手),複製新的為 B, 並新增 HandPoser,指定 HandPoser 的屬性 PoseRoot 為 B。
下圖展示的效果,複製的手因為在外面,所以不會跟著人物 Idle 動。
你也可以將複製的手放在和原先的手同級的位置,這樣複製的手顯示的骨骼就跟著人物動了。

以上內容來自遊民星空作者:Agent
《黑神話: 悟空》全流程攻略!全成就達成條件、戰鬥系統拆解與必點技能推薦

《黑神話: 悟空》全流程攻略!全成就達成條件、戰鬥系統拆解與必點技能推薦|不斷更新
《黑神話:悟空》遊戲評測

評測《黑神話:悟空》!天命人的四年之約,一場場令人驚嘆的勝利
本文原創(或整理)於亞洲電玩通,未經作者與本站同意不得隨意引用、轉載、改編或截錄。
特約作家簡介
支持贊助 / DONATE
亞洲電玩通只是很小的力量,但仍希望為復甦台灣遊戲研發貢獻一點動能,如果您喜歡亞洲電玩通的文章,或是覺得它們對您有幫助,歡迎給予一些支持鼓勵,不論是按讚追蹤或是贊助,讓亞洲電玩通持續產出,感謝。
BTC |
![]() |
bc1psp8nnerlepv56nyfha6mqwnp3yr7qqjdw44c6qt5lx5r2urma7fqykxvwj |
|
ETH |
![]() |
0xB2231557bc418201922DD7C2673ec97E67E35F83 |
|
TRON |
![]() |
TAomNj4L6vMJuaJmbWUdmT1uAWYPf9vDjp |








