內(nèi)容是看B站看到的一個(gè)極客學(xué)院的教學(xué)視頻吏颖,想寫下來幫助自己記憶和方便查閱刨啸,如果想了解更多請(qǐng)進(jìn)入B站搜索:【極客學(xué)院】Unity3D工程師 初級(jí)+中級(jí)+高級(jí)+資深工程師
物體一般的動(dòng)畫都是使用正向動(dòng)力學(xué)從根部開始傳導(dǎo)到節(jié)點(diǎn)之中垫释,如果想要人物與場(chǎng)景內(nèi)的物體互動(dòng)瞳腌,比如實(shí)現(xiàn)諸如刺客信條里面那樣跳來跳去谴忧、爬來爬去的效果朴下,那就需要使用反向動(dòng)力學(xué)來實(shí)現(xiàn)努咐。
在腳本中使用IK
主要是將人物的關(guān)節(jié),比如手殴胧、腳渗稍、頭部佩迟、手肘、膝蓋等和場(chǎng)景中物體綁定竿屹,那么人物的關(guān)節(jié)就會(huì)隨著場(chǎng)景中物體的移動(dòng)而移動(dòng)报强。
主要使用Animator類下的函數(shù)來進(jìn)行設(shè)置
注意要在MonoBehaviour腳本里的OnAnimatorIK函數(shù)里面使用。
先使用Weight設(shè)置權(quán)重拱燃,然后使用Position和Rotation將關(guān)節(jié)的位置和旋轉(zhuǎn)分別和目標(biāo)綁定秉溉。
使用hit的函數(shù)主要是設(shè)置手肘和膝蓋的關(guān)節(jié),不過設(shè)置過程類似碗誉。
注意如果同時(shí)設(shè)置比如頭部的IK和手部的IK的時(shí)候召嘶,可能出現(xiàn)不匹配,這時(shí)就要?jiǎng)?chuàng)建一個(gè)新的Layers復(fù)制前面的層哮缺,代碼使用如下的代碼
也就是在指定層的時(shí)候啟用手部的IK弄跌,這樣頭部的和手部的IK就可以配合一起使用了。
如果不這樣蝴蜓,頭部瞄準(zhǔn)的時(shí)候手部雖然有IK但是不會(huì)隨著物體的轉(zhuǎn)動(dòng)而移動(dòng)碟绑。這里物體是掛在頭部的子物體,這樣就會(huì)隨著頭部的轉(zhuǎn)動(dòng)而轉(zhuǎn)動(dòng)茎匠,而頭部瞄準(zhǔn)泰迪的頭部格仲。同時(shí)物體上有兩個(gè)空物體分別是左手和右手放置的位置,左手和右手的IK就綁定在上面诵冒。
設(shè)置頭部的Weight 的時(shí)候注意有一個(gè)參數(shù)可以設(shè)置是否可以360度旋轉(zhuǎn)或者是180度旋轉(zhuǎn)凯肋,這樣看起來更加自然。具體的當(dāng)然要查看具體的API來獲取更多信息汽馋。