輕松學(xué)會(huì)2D綁骨+IK,媽媽再也不用給我買Spine

作者:Yumir
哈嘍艾瑞巴蒂~Merry Christmas?。?/p>
圣誕爺爺來(lái)給大伙送禮物啦!??!
學(xué)習(xí)游戲開發(fā)的過(guò)程中游戲素材一直是一個(gè)很大的問(wèn)題,游戲需要畫風(fēng)統(tǒng)一,但是卻不一定能找到合適的素材,這時(shí)候就需要用勤勞的雙手自己創(chuàng)造財(cái)富啦【多圖預(yù)警】。
Unity提供了一套2D綁骨的相關(guān)插件(2DAnimation+2DIK),但還不是正式版本,需要在PackageManager中下載才可以使用,我試著用了一下覺(jué)得已經(jīng)足夠好用啦。

骨骼動(dòng)畫相比其他動(dòng)畫形式更容易、更快捷,不同的骨骼動(dòng)畫可以被組合到一起——比如射擊游戲的持槍走路的動(dòng)畫,實(shí)際上是持槍動(dòng)畫+走路動(dòng)畫。而且可以重復(fù)在不同的角色身上運(yùn)用,一樣的動(dòng)作可以發(fā)N個(gè)不一樣的視頻,想想就有點(diǎn)興奮呢。
首先是素材,可以使用一般的圖片也可以用PSB格式的文件,這里我對(duì)各種情況都做了測(cè)試,本文使用的是PSB格式,下面是我制作的素材,原素材來(lái)自:https://itch.io/game-assets
https://pan.baidu.com/s/1Wn29iJzjTYBKmbLZ0DMw5w#list/path=%2F
PSB格式是PS的輸出格式之一,可以完整保留圖層信息,在Unity中隨時(shí)打開修改,需要下載插件才能使用。打開unity項(xiàng)目點(diǎn)擊Window>PackageManager打開插件加載窗口,下載下圖框選的三個(gè)插件。

首先我們需要通過(guò)2D Animation對(duì)人物進(jìn)行骨骼綁定的操作,說(shuō)是骨骼綁定,實(shí)際上包括了綁骨、蒙皮兩個(gè)操作,畢竟如果綁骨不蒙皮,骨是骨,沒(méi)有皮,視需求調(diào)權(quán)重,不過(guò)一般都是要自己調(diào)的。
1、綁骨
首先需要打開素材的Sprite Editor,點(diǎn)擊左上角的下拉菜單選擇Skinning Editor,打開2D Animation編輯界面。

左邊一列是我們接下來(lái)要使用的功能菜單,按操作流程排序,綁骨相關(guān)的功能在第一個(gè)工具欄,默認(rèn)選中第一個(gè)工具,可以預(yù)覽當(dāng)前的骨骼綁定情況,當(dāng)骨骼綁定完成之后可以在這里看當(dāng)前的綁定效果。
我們可以試著先隨便新建幾個(gè)骨骼學(xué)習(xí)一下骨骼,規(guī)則如下:
點(diǎn)擊Create Bone,鼠標(biāo)會(huì)變成一個(gè)小圓點(diǎn),如果沒(méi)有出現(xiàn)的話先雙擊選中整個(gè)游戲人物。
左鍵單擊新建骨骼起點(diǎn),再左鍵單擊骨骼結(jié)束位置,新建骨骼。
下一個(gè)骨骼會(huì)以上一個(gè)骨骼的結(jié)束點(diǎn)為起點(diǎn)。
左鍵選擇骨骼,右鍵取消骨骼選中。
一個(gè)骨骼可以有多個(gè)子骨骼,但是尖端只對(duì)應(yīng)一個(gè)。

骨骼的設(shè)計(jì)需要配合動(dòng)畫需求,但是也不需要太擔(dān)心,因?yàn)榧词剐枰薷墓趋澜Y(jié)構(gòu),用骨骼這一欄的另外兩個(gè)功能也是很輕松的。
這里對(duì)角色進(jìn)行了簡(jiǎn)單的骨骼綁定,因?yàn)橛玫氖荘SB,保留了圖層信息的部分不需要額外設(shè)置層級(jí),在沒(méi)有分圖層的部分對(duì)骨骼的層級(jí)進(jìn)行設(shè)置,數(shù)值越高越前方(在工具欄點(diǎn)擊Reparent Bone喚出)。

2、蒙皮
將骨骼設(shè)置完畢之后,骨骼的旋轉(zhuǎn)并不能帶動(dòng)角色旋轉(zhuǎn),這就需要蒙皮,方法很簡(jiǎn)單,點(diǎn)擊Auto Geometry,再點(diǎn)擊右下角的按鈕自動(dòng)蒙皮,這里將權(quán)重也一起上了,另外三個(gè)數(shù)值是對(duì)生成的蒙皮進(jìn)行設(shè)置,數(shù)值越大越細(xì)致。

自動(dòng)蒙皮之后可以通過(guò)另外四個(gè)工具調(diào)節(jié)頂點(diǎn),對(duì)細(xì)節(jié)進(jìn)行處理。

蒙皮之后就可以通過(guò)骨骼來(lái)控制角色動(dòng)作了,但是還沒(méi)好,為啥,因?yàn)檫@個(gè)花花綠綠的動(dòng)起來(lái)很鬼畜啊,這也是為什么最后一步需要自己設(shè)置權(quán)重了。

3、權(quán)重
權(quán)重的設(shè)置決定了骨骼對(duì)蒙皮的影響程度,可以看到有四種工具,剛剛已經(jīng)自動(dòng)刷過(guò)一遍權(quán)重了,另外兩個(gè)方法不知道為什么用不了(目前也不需要用),用Weight Brush來(lái)刷權(quán)重是非常方便的。
點(diǎn)擊Weight Brush,選中需要刷權(quán)重的部位,點(diǎn)擊需要設(shè)置權(quán)重的骨骼,再在需要刷權(quán)重的位置涂抹就可以設(shè)置權(quán)重了,右下角可以設(shè)置畫筆的大小、硬度(類似透明度)和離散程度。

繪制好權(quán)重之后動(dòng)起來(lái)就很正常了。

點(diǎn)擊“Apply”保存設(shè)置,將素材拖拽到游戲場(chǎng)景中使用,如果是非PSB格式需要掛載Sprite Skin腳本,點(diǎn)擊Create Bones自動(dòng)掛載骨骼,就可以使用了(PSB直接掛好骨骼不需要另外用腳本)。

現(xiàn)在我們已經(jīng)可以用骨骼控制角色做出各種動(dòng)作了,在開始動(dòng)畫制作之前先說(shuō)一下反向動(dòng)力學(xué)IK在這個(gè)2D骨骼上應(yīng)該怎樣設(shè)置。
在角色游戲物體身上添加IK Manager2D腳本,這個(gè)腳本是通過(guò)下載插件獲得的,點(diǎn)擊“+”號(hào)添加新的IK Solvers,這里建議選擇第一個(gè),比較靈活,同學(xué)們可以私下嘗試其他選項(xiàng)。

點(diǎn)擊完畢之后unity會(huì)自動(dòng)生成一個(gè)CCDSolver2D,點(diǎn)擊該游戲物體可以看到上面有一個(gè)腳本,在需要添加IK的骨骼下新建一個(gè)子物體,將該子物體移動(dòng)到骨骼前方。

再將該子物體拖拽到CCDSolver2D的Effector上,調(diào)節(jié)Chain Length的值,可以看到骨骼亮起黃色小點(diǎn),表示該骨骼被這個(gè)CCDSolver2D所控制,拖動(dòng)這個(gè)小點(diǎn)就可以通過(guò)反向動(dòng)力控制骨骼。

IK的另一個(gè)功能是將某個(gè)骨骼“固定”,在CCDSolver2D上點(diǎn)擊Create Target,unity會(huì)自動(dòng)生成一個(gè)子物體作為Target,原本黃色的點(diǎn)點(diǎn)變成了綠色,這樣一來(lái)就將這塊位置的骨骼“固定”住了。


接下來(lái)使用自帶的動(dòng)畫K幀就可以為所欲為啦,Unity的動(dòng)畫編輯器使用之前有說(shuō)過(guò),真的是很常見(jiàn)的功能必須要掌握呢。
剛開始不建議用很難的動(dòng)畫做練習(xí),上面是我制作的一個(gè)打招呼的簡(jiǎn)單動(dòng)畫,可以先試著實(shí)現(xiàn)那個(gè),但是稍微復(fù)雜的動(dòng)畫也是需要的,比如跑步動(dòng)作。這類動(dòng)作最好找游戲幀動(dòng)作對(duì)比著去調(diào)整骨骼,憑空做出來(lái)是很難的。

剩下的就都是體力活和對(duì)動(dòng)作的理解了,沒(méi)啥好說(shuō)的,這是我調(diào)好的跑步動(dòng)圖,可以下載我的工程參考一下。

我用的unity版本是2018.4.8c3,最好是用同版本打開我的項(xiàng)目哦。
https://github.com/peiyl/HeaveHo

歡迎加入游戲開發(fā)群歡樂(lè)攪基:869551769
有意向參與線下游戲開發(fā)學(xué)習(xí)的讀者可戳這里進(jìn)一步了解:http://www.levelpp.com/