在unity中使用spine動畫

能夠使用spine製做骨骼動畫來給unity使用。spine提供了unity運行包。運行包的版本必定要和spine版本一致,否則會報錯。json

導入spine動畫:oop

由spine導出的動畫文件有3個:xx.atlas,xx.json,xx.png。將這三個文件直接導入unity會報錯,將xx.atlas改成xx.atlas.txt,這時會自動生成xx_Atlas.asset,xx_Material.mat。而後在unity裏面create spine SkeletonData,指定xx_Atlas.asset和xx.json。就能夠用SkeletonData生成動畫了。動畫

控制動畫播放:component

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

spineAnimationState.SetAnimation(0, animationName, true);事件

切換動畫的bug:animation

因爲spine在切換動畫的時候自動補償,用於動畫的平穩過分。可是會致使殘影等bug,這時候須要在SetAnimation前調用
skeletonAnimation.skeleton.SetToSetupPose ();
spineAnimationState.ClearTracks ();
來消除前一個動畫的影響。it

添加事件:io

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

事件設置採用lambda表達式:

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

動態獲取slot的座標: Vector3 pos = skeletonAnimation.skeleton.FindSlot("hat_1").Bone.GetWorldPosition(transform);

相關文章
相關標籤/搜索