spine之五 在程式中使用動畫

2021-07-11 16:17:42 字數 2455 閱讀 8128

遊戲中人物的走動,跑動,攻擊等動作是必不可少,實現它們的方法一般採用幀動畫或者骨骼動畫。

幀動畫與骨骼動畫的區別在於:幀動畫的每一幀都是角色特定姿勢的乙個快照,動畫的流暢性和平滑效果都取決於幀數的多少。而骨骼動畫則是把角色的各部分身體部件繫結到一根根互相作用連線的「骨頭」上,通過控制這些骨骼的位置、旋轉方向和放大縮小而生成的動畫。

它們需要的資源各不相同,如下分別是幀動畫和骨骼動畫所需的資源圖:

spine是一款針對遊戲的2d骨骼動畫編輯工具,它具有良好的ui設計和完整的功能,是乙個比較成熟的骨骼動畫編輯器。spine旨在提供更高效和簡潔的工作流程,以建立遊戲所需的動畫。

使用spine建立骨骼動畫分兩大步驟:

在setup模式下,組裝角色部件,為其繫結骨骼;

在animate模式下,基於繫結好的骨骼建立動畫。

1)在setup模式下,選中images屬性,匯入所需資源所在資料夾,其中路徑名和資源名中不能出現中文,否則解析不了;

2)拖動images下的到場景,對角色進行組裝(把各個身體部位拼在一起),可通過draw order屬性調整所在層的順序;

3)建立骨骼,並繫結到骨骼上,要注意各骨骼的父子關係。

4)切換到animate模式,選中要「動」的骨骼,對其進行旋轉、移動、縮放等操作,每次改動後要記得打關鍵幀。

5)在選單欄找到texture packer項,對角色紋理進行打包,資源檔案字尾為atlas(而非cocos2d-x常用的plist)。打包後將生成兩個檔案,即:png 和 atlas。

6)匯出動畫檔案json。

cocos2d-x程式中,使用spine動畫首先需要包含spine的相關標頭檔案。

#include #include 

"spine/spine.h

"using

namespace spine;

其常用方法如下:

建立乙個spine動畫物件,將動畫檔案和資源檔案匯入。

auto skeletonnode = new skeletonanimation("

enemy.json

", "

enemy.atlas

");

skeletonnode->setanimation(0, "

walk

", true);

skeletonnode->addanimation(0, "

walk

", true

);skeletonnode->addanimation(0, "

attack

", false);

skeletonnode->setmix("

walk

", "

attack

", 0.2f

);skeletonnode->setmix("

attack

", "

walk

", 0.4f);

skeletonnode->timescale = 0.6f;
設定是否顯示骨骼通過設定debugbones,true表示顯示,false表示隱藏。

skeletonnode->debugbones = true;

auto skeletonnode = new skeletonanimation("

enemy.json

", "

enemy.atlas");

skeletonnode->setmix("

walk

", "

attack

", 0.2f

);skeletonnode->setmix("

attack

", "

walk

", 0.4f

);skeletonnode->setanimation(0, "

walk

", false

);skeletonnode->setanimation(0, "

attact

", false

);skeletonnode->addanimation(0, "

walk

", false

);skeletonnode->addanimation(0, "

attact

", true

);skeletonnode->debugbones = true

;size windowsize = director::getinstance()->getwinsize();

skeletonnode->setposition(point(windowsize.width / 2, windowsize.height / 2

));addchild(skeletonnode);

效果圖:

在unity中使用spine動畫

可以使用spine製作骨骼動畫來給unity使用。spine提供了unity執行包。執行包的版本一定要和spine版本一致,不然會報錯。匯入spine動畫 由spine匯出的動畫檔案有3個 xx.atlas,xx.json,xx.png。將這三個檔案直接匯入unity會報錯,將xx.atlas改為x...

在 Qt 程式中使用 MPIR

上篇部落格介紹了如何編譯 mpir,這篇講講如何在程式中使用。我主要是用 c qt 開發程式,所以這裡只講如何在qt 程式中應用 mpir。我這裡以mpir gc 編譯版為例,首先建立乙個目錄 dll mpir gc vc14 win32 然後把需要的檔案都拷貝到這個目錄中,包括 裡面加入這麼幾行 ...

UWP 在UWP平台中使用Lottie動畫

是的,你沒看錯,qq影音主介面上這個動畫效果是使用lottie動畫實現的!那就趁這個機會,來分享點關於lottie動畫的東西吧!lottie是airbnb開源的乙個面向ios android react native的動畫庫,它可以解析儲存為json格式的由bodymovin匯出的使用ae製作的動畫...