플러그인 설치 (다운로드 주소)
spine-unity-버전.unitypackage 파일을 유니티에 임포트.
스파인 공식 안내 문서 : spine-unity Runtime Documentation
데이터 파일을 적당한 폴더에 복사하기. 파일은
오브젝트 이름이 'sd_minos' 라면,
이 3개 파일을 유니티에 가져가면 (Project에 포함시키면) 스파인 플러그인이 자동으로 매트리얼과 스켈레톤 데이터 파일을 만들 줍니다.
각 중요 파일의 설정 항목 설명은, 공식 문서 (위의 링크)를 보고 파악 필요
SkeletonAnimation 컴포넌트 (스크립트) 추가
SkeletonData 데이터 추가 (위에서 import 해온 데이터)
이것만으로 일단 화면에 보이는 오브젝트가 설정됩니다.
애니메이션 확인하려면, SkeletonAnimation 의 Animation Name을 적당히 설정해서 애니메이션이 제대로 보이는지 확인합니다.
상세한 컨트롤을 스크립트를 직접 짜야 합니다.
SkeletonAnimation를 사용하는 스크립트를 작성해서 즉석으로 애니메이션을 플레이 해봅니다.
using Spine.Unity; public class SpineCharControlA : MonoBehaviour { // [SpineAnimation] 프로퍼티는 플러그인에서 제공하는 것인데, // 이 프로퍼티를 쓰면 애니메이션을 골라 설정 할수 있습니다. // 샘플 스켈레톤 애니메이션은 'idle'과 'behit' 두가지 애니메이션을 // 갖고 있어서 각각 변수로 설정합니다. 수동 설정이므로 컴포넌트 화면에서 // 애니메이션을 설정해줍니다. [SpineAnimation] public string idleAnimName; [SpineAnimation] public string behitAnimName; // 주로 사용할 중요 컴포넌트 변수를 선언해둡니다. SkeletonAnimation skeletonAnimation; Spine.AnimationState animationState; Spine.Skeleton skeleton; // Start()나 Awake() 등의 적당한 위치에서 필요 컴포넌트를 얻어 둡니다. // 별개 이야기지만 Awake(),Start()에서 초기화를 과다하게 하면 초기화때 시간이 많이 걸립니다. // 실제 폰에서 테스트해보고.. 음 그전에 감으로 대충 조절 할 수 있어야 합니다. void Start() { skeletonAnimation = GetComponent<SkeletonAnimation>(); animationState = skeletonAnimation.AnimationState; skeleton = skeletonAnimation.Skeleton; } // 외부에서 호출할 애니 함수 public void playAnim_Behit() { animationState.SetAnimation(0, this.behitAnimName, false); } }
그런데, 다시 원래 idle 애니메이션으로 돌아가지는 않습니다. 기본 애니메이션으로 돌아가도록 설정이 되어 있지 않기 때문입니다.
이걸 해결하는 방법은 공식 문서를 참고해서, 코루틴이나 TrackEntry를 활용하는 방법을 봅니다.
(Controlling Animation - AnimationState)
다음은 유니티의 MacAnim을 쓰는 방법을 사용합니다.
스파인은 스켈레톤데이터 애니메이션으로 MacAnim 애니메이터와 에니메이션을 만들수 있습니다.
현재 작업에 맞는지 확인해보고 작업을 합시다.
이번 경우에는,
이런 조건을 처리하기 좋은 것이 MacAnim 이라서 요걸 쓰는 것을 다룹니다.
오브젝트_SkeletonData를 선택하고, 인스펙터에서 SkeletonMecanim 항목에서 (가장 아래쪽) Generate Mecanim controller 기능을 클릭합니다.
(아래그림)
그럼 자동으로 Animator를 만들어줍니다.
(아래그림)
Animator 에서 애니메이션 이동 경로 작성
<WRAP group> <WRAP center half column>
Layers |
</WRAP> <WRAP center half column>
Parameters |
</WRAP> </WRAP><WRAP clear />
전환 조건 |
일반 흐름
강제전환
상태 Transition 중 샘플 가져옴 - freeze로 가는 트랜지션 |
파라미터 설명 | |
---|---|
Has Exit Time | 끄기. 2D 애니메이션이고, 애니메이션을 블렌딩할 필요 없으니까. |
Exit Time | 비활성. Has Exit Time 이 꺼져 있으니까 무시됨. 참고로, 1이면 끝까지 애니메이션을 플레이하고 상태를 종료 하라는 뜻. |
Transition Offset | 애니메이션 전환시, 어느 부분에서 시작하는가? 0이면 처음, 0.9 면 90%쯤에서 시작. |
Transition Duration | 이건 써본 적이 없어서 모르겠음. |
Interruption Source | 이건 써본 적이 없어서 모르겠음. |
Can Transition To Self | 조건이 맞다면, 자기 자신에게 되돌아 갈 수 있는가? behit 같이 타격 애니메이션이 중복해서 발생 되는 경우 behit플레이 중이더라도 현재 애니메이션이 처음부터 다시 플레이 되도록 자신에게(즉,현재상태) 되돌아가서 플레이 되도로 설정할 수 있다. |
Conditions
상태 Transition 중 샘플 - behit로 가는 트랜지션 |
---|
behit 로 가는 경우, 애니메이션이 모두 플레이 (완플) 되어야 다른 상태로 넘어 간다.
아래 예시는, Can Transition To Self가 사용 되는 경우,