能夠使用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);