유니티 스파인 애니메이션 사용법 간단 구현 Spine Animation

반응형

스파인 SDK 다운로드

spine-unity Download

Getting Started Documentation spine-unity unitypackage spine-unity 4.2 (updated 2024-06-25, changelog) Compatible with Spine 4.2.00 or newer and Unity 2017.1-2023.1. Add package from git URL: (URLs for spine-csharp, spine-unity and examples) https://github

ko.esotericsoftware.com

 

코드 작성

using UnityEngine;
using Spine.Unity;

public class SpineAnimationExample : MonoBehaviour
{
    // 스파인 애니메이션 컴포넌트
    private SkeletonAnimation skeletonAnimation;

    // 애니메이션 이름들
    public string walkAnimation = "walk";
    public string jumpAnimation = "jump";
    public string currentAnimation;

    void Start()
    {
        // GameObject에 연결된 SkeletonAnimation 컴포넌트 가져오기
        skeletonAnimation = GetComponent<SkeletonAnimation>();

        // SkeletonAnimation이 null이 아닌 경우
        if (skeletonAnimation != null)
        {
            // 초기 애니메이션 설정
            PlayAnimation(walkAnimation);
        }
        else
        {
            Debug.LogError("SkeletonAnimation 컴포넌트를 찾을 수 없습니다.");
        }
    }

    void Update()
    {
        // 키보드 입력 예시: 스페이스바를 누르면 점프 애니메이션 재생
        if (Input.GetKeyDown(KeyCode.Space))
        {
            PlayAnimation(jumpAnimation);
        }
    }

    // 애니메이션 재생 함수
    void PlayAnimation(string animationName)
    {
        // 현재 애니메이션이 같은 경우, 다시 재생하지 않음
        if (currentAnimation == animationName)
            return;

        // 애니메이션 재생
        skeletonAnimation.AnimationState.SetAnimation(0, animationName, true);
        currentAnimation = animationName;

        // 애니메이션 이벤트 리스너 등록 예시
        skeletonAnimation.AnimationState.Event += HandleAnimationEvent;
    }

    // 애니메이션 이벤트 핸들러
    void HandleAnimationEvent(TrackEntry trackEntry, Spine.Event e)
    {
        // 예제: 점프 애니메이션에서 이벤트가 발생하면 콘솔에 출력
        if (trackEntry.Animation.Name.Equals(jumpAnimation) && e.Data.Name.Equals("footstep"))
        {
            Debug.Log("Jumping sound or effect could be triggered here!");
        }
    }
}
반응형