在Unity中使用spine動畫

spine 的運(yùn)行庫: https://github.com/EsotericSoftware/spine-runtimes
筆者在使用spine 時遇到的一些問題,這里基本上你也許會遇到:下面是 yizhangxyz的博客 的博客。

可以使用spine制作骨骼動畫來給unity使用。spine提供了unity運(yùn)行包。運(yùn)行包的版本一定要和spine版本一致,不然會報錯。

導(dǎo)入spine動畫:

由spine導(dǎo)出的動畫文件有3個:xx.atlas,xx.json,xx.png。將這三個文件直接導(dǎo)入unity會報錯,將xx.atlas改為xx.atlas.txt,這時會自動生成xx_Atlas.asset,xx_Material.mat。然后在unity里面create spine SkeletonData,指定xx_Atlas.asset和xx.json。就可以用SkeletonData生成動畫了。

// 教程
//1.導(dǎo)出動畫


導(dǎo)出動畫.png

// 2.設(shè)置 .txt文件


設(shè)置 .txt文件 .png

// 3.導(dǎo)出文件到Unity中使用
成功導(dǎo)出文件.png

控制動畫播放:

SkeletonAnimation skeletonAnimation; //gameobject的component。
Spine.AnimationState spineAnimationState = skeletonAnimation.state;
Spine.Skeleton skeleton;

spineAnimationState.SetAnimation(0, animationName, true);

切換動畫的bug:

由于spine在切換動畫的時候自動補(bǔ)償,用于動畫的平穩(wěn)過度。但是會導(dǎo)致殘影等bug,這時候需要在SetAnimation前調(diào)用
skeletonAnimation.skeleton.SetToSetupPose ();
spineAnimationState.ClearTracks ();
來消除前一個動畫的影響。

添加事件:

skeletonAnimation.state.Start:開始播放
skeletonAnimation.state.End:動畫被清除或者中斷
skeletonAnimation.state.Interrupt:動畫被打斷
skeletonAnimation.state.Complete:播放結(jié)束
skeletonAnimation.state.Event:用戶自定義事件

事件設(shè)置采用lambda表達(dá)式:

skeletonAnimation.state.Complete += (state, trackIndex,loopCount) => {
Debug.log("");
};

動態(tài)獲取slot的坐標(biāo):
Vector3 pos = skeletonAnimation.skeleton.FindSlot("hat_1").Bone.GetWorldPosition(transform);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容