骨骼動畫詳解 Spine

2021-08-17 21:57:59 字數 2615 閱讀 8914

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

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

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

骨骼動畫比傳統的逐幀動畫要求更高的處理器效能,但同時它也具有更多的優勢,比如:

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

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

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

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

下面簡單介紹下具體步驟,更多詳細內容請檢視官方**教程:spine快速入門教程。

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);

效果圖:

參考位址

骨骼動畫詳解 Spine

遊戲中人物的走動,跑動,攻擊等動作是必不可少,實現它們的方法一般採用幀動畫或者骨骼動畫。幀動畫與骨骼動畫的區別在於 幀動畫的每一幀都是角色特定姿勢的乙個快照,動畫的流暢性和平滑效果都取決於幀數的多少。而骨骼動畫則是把角色的各部分身體部件繫結到一根根互相作用連線的 骨頭 上,通過控制這些骨骼的位置 旋...

骨骼動畫詳解 Spine

遊戲中人物的走動,跑動,攻擊等動作是必不可少,實現它們的方法一般採用幀動畫或者骨骼動畫。幀動畫與骨骼動畫的區別在於 幀動畫的每一幀都是角色特定姿勢的乙個快照,動畫的流暢性和平滑效果都取決於幀數的多少。而骨骼動畫則是把角色的各部分身體部件繫結到一根根互相作用連線的 骨頭 上,通過控制這些骨骼的位置 旋...

Cocosd使用骨骼動畫Spine

遊戲中人物的走動,跑動,攻擊等動作是必不可少,實現它們的方法一般採用幀動畫或者骨骼動畫。幀動畫與骨骼動畫的區別在於 幀動畫的每一幀都是角色特定姿勢的乙個快照,動畫的流暢性和平滑效果都取決於幀數的多少。而骨骼動畫則是把角色的各部分身體部件繫結到一根根互相作用連線的 骨頭 上,通過控制這些骨骼的位置 旋...