上一回我們介紹了Unity2D Animation的骨骼綁定液茎,這一回我們講講IK漂辐。
1. 什么是IK
IK是Inverse Kinematic的縮寫(xiě),也就是反向動(dòng)力學(xué)座菠。是根據(jù)骨骼的終節(jié)點(diǎn)來(lái)推算其他父節(jié)點(diǎn)的位置的一種方法扮叨。比如通過(guò)手的位置推算手腕、胳膊肘的骨骼的位置坦冠。逆向動(dòng)力學(xué)的過(guò)程在一些場(chǎng)景下十分有用形耗,例如一個(gè)機(jī)械臂,你需要它去抓取一個(gè)放置在特定的空間位置的物體辙浑,那么就需要利用逆向動(dòng)力學(xué)去計(jì)算出機(jī)械臂各個(gè)關(guān)節(jié)的旋轉(zhuǎn)角度激涤,進(jìn)而驅(qū)動(dòng)機(jī)械臂去抓取物體。與之對(duì)應(yīng)的FK是正向動(dòng)力學(xué)判呕,是Forward Kinematic的縮寫(xiě)倦踢。正向動(dòng)力學(xué)是根據(jù)父節(jié)點(diǎn)的運(yùn)動(dòng)來(lái)影響到子節(jié)點(diǎn)的位置的一種方法。
IK系統(tǒng)能夠極大程度的提高角色行走侠草,跳躍辱挥,跑步等動(dòng)畫(huà)的制作效果和效率,是骨骼動(dòng)畫(huà)系統(tǒng)不可缺少的一個(gè)功能梦抢。大多數(shù)的2D骨骼動(dòng)畫(huà)軟件中都有IK系統(tǒng)般贼,比如Spine,DragonBones等奥吩。Unity 2D Animation中也引入了IK系統(tǒng)哼蛆。
2. 在Unity中安裝IK插件
Unity2020版本及以上的版本中的2D Animation中內(nèi)置了IK系統(tǒng),所以不需要專(zhuān)門(mén)安裝霞赫。Unity2019版如果想使用2D IK系統(tǒng)則需要安裝插件腮介。
打開(kāi)Unity2019的版本,選擇Package Manager包管理器端衰,搜索IK叠洗,如果沒(méi)有搜索到結(jié)果的話,需要將Package Manager設(shè)置為Preview預(yù)覽模式旅东。此時(shí)Unity會(huì)提示你是否確定使用預(yù)覽包灭抑,點(diǎn)擊確定。
設(shè)置好了之后可以搜到IK插件抵代,點(diǎn)擊Install安裝腾节。
3. 給角色添加IK組件
在場(chǎng)景中創(chuàng)建一個(gè)空物體(Create Empty),將其命名為你的角色名稱(chēng)(Player),選中上一節(jié)中我們創(chuàng)建好的角色案腺,將其拖入到這個(gè)空物體中庆冕。IK系統(tǒng),以及后面要用到的Animation動(dòng)畫(huà)系統(tǒng)劈榨,都需要在這個(gè)空物體“殼子”上掛載組件访递,既方便管理有能夠保證后面加入的別的組件不會(huì)影響到動(dòng)畫(huà)或者IK系統(tǒng)。
在Player上添加組件——IK Manager 2D(2D反向動(dòng)力管理器)同辣。
添加完成后可以看到一個(gè)IK Solvers的列表拷姿,初始狀態(tài)是空的(List is Empty),這個(gè)就是每一個(gè)IK關(guān)節(jié)的控制單元邑闺。
點(diǎn)擊左下角的加號(hào)跌前,創(chuàng)建一個(gè)IK控制單元,選擇Limb(肢體)選項(xiàng)陡舅,該選項(xiàng)對(duì)應(yīng)了一般動(dòng)物和人類(lèi)的四肢抵乓,默認(rèn)是控制兩個(gè)骨節(jié)。而Chain(鏈條)則是控制多個(gè)骨節(jié)的單元靶衍,CCD是雙向可動(dòng)鏈條灾炭,F(xiàn)ABRIK是單向可動(dòng)鏈條。我們創(chuàng)建的是人物骨骼颅眶,所以選擇Limb蜈出。
選擇之后會(huì)創(chuàng)建一個(gè)新的節(jié)點(diǎn)New LimbSolver2D,我們先從左腿開(kāi)始做IK涛酗,所以可以將此節(jié)點(diǎn)命名為L(zhǎng)eftLegSolver铡原。
然后選中左腿對(duì)應(yīng)的骨骼,在這個(gè)骨骼上創(chuàng)建一個(gè)空物體作為IK控制的點(diǎn)商叹。將這個(gè)點(diǎn)移動(dòng)到肢端燕刻。
選中上一步創(chuàng)建的LeftLegSolver,將剛剛創(chuàng)建的空物體拖入到Limb Solver 2D組件的Effector(作用點(diǎn))中剖笙。
點(diǎn)擊Create Target生成目標(biāo)點(diǎn)卵洗。
生成好目標(biāo)點(diǎn)后可以看到如下結(jié)果,左腿兩節(jié)骨骼均有綠色的點(diǎn)弥咪,肢端上有圓圈过蹂,圈中也有綠色點(diǎn)。此時(shí)表明IK目標(biāo)點(diǎn)就生成好了聚至。點(diǎn)擊目標(biāo)點(diǎn)進(jìn)行拖動(dòng)酷勺,可以實(shí)現(xiàn)腿部的IK運(yùn)動(dòng)效果。
拖拽腳尖處的圓圈(Target)就可以實(shí)現(xiàn)如圖顯示的IK效果扳躬。
重復(fù)上述操作脆诉,添加其余三個(gè)肢體的IK Solver勋功。需要注意的一點(diǎn),當(dāng)創(chuàng)建出來(lái)的關(guān)節(jié)反向了库说,需要點(diǎn)擊下圖右側(cè)的Flip單選框,反轉(zhuǎn)當(dāng)前的關(guān)節(jié)片择。
四肢都添加了IK之后們就是如圖顯示的效果潜的。
4. IK效果演示
在進(jìn)行演示的時(shí)候一定要選中根節(jié)點(diǎn)骨骼進(jìn)行移動(dòng),否則會(huì)將關(guān)節(jié)拉脫位字管。這樣就能看到如下圖所顯示的IK動(dòng)作了啰挪。