스켈레톤 애니메이션 혼합
스켈레톤 애니메이션을 사용할 때, skeleton_animation_set 함수를 통해 애니메이션 세트를 쉽게 전환할 수 있습니다. 하지만 애니메이션을 전환할 때 스킵이나 지연이 발생할 수 있습니다. 이를 방지하기 위해 두 애니메이션 세트 간의 혼합 값을 설정하면 스프라이트가 두 애니메이션 사이를 보간(interpolate)하게 됩니다. 일반적으로 이 설정은 인스턴스의 Create Event에서 한 번만 설정하면 되며, 이후 GameMaker는 해당 인스턴스의 애니메이션 세트를 사용하여 모든 변경 사항을 보간합니다.
주의 사항
Spine 4.0에서는 회전 애니메이션의 작동 방식이 변경되었습니다. 이제는 가능한 가장 짧은 경로를 사용하여 회전을 보간하지 않고, 키프레임의 절대 값을 사용하여 보간합니다. 이는 이전 버전의 Spine 애니메이션을 업그레이드할 경우 예상치 못한 동작을 초래할 수 있으며, 회전 동작이 원하는 대로 작동하도록 Spine 프로젝트 내에서 변경이 필요할 수 있습니다.
문법
skeleton_animation_mix(animfrom, animto, duration);
인수 설명
| 인수 이름 | 타입 | 설명 |
|---|---|---|
| animfrom | String | 보간할 첫 번째 애니메이션 세트의 이름 (문자열) |
| animto | String | 보간할 두 번째 애니메이션 세트의 이름 (문자열) |
| duration | Real | 보간의 지속 시간 (초 단위) |
반환 값
- N/A
예제
skeleton_animation_set("walk");
skeleton_animation_mix("walk", "jump", 0.2);
skeleton_animation_mix("jump", "walk", 0.4);
위 코드는 스켈레톤 애니메이션 스프라이트를 가진 인스턴스의 Create Event에 들어가며, "walk"와 "jump" 두 애니메이션 세트 간의 보간 지속 시간을 설정합니다.
활용 예제
- 애니메이션 전환: 캐릭터가 걷다가 점프하는 애니메이션으로 부드럽게 전환할 수 있습니다.
gml skeleton_animation_set("walk"); skeleton_animation_mix("walk", "jump", 0.3); - 복잡한 애니메이션 시퀀스: 여러 애니메이션을 순차적으로 전환하여 복잡한 애니메이션 효과를 만들 수 있습니다.
gml skeleton_animation_set("idle"); skeleton_animation_mix("idle", "run", 0.5); skeleton_animation_mix("run", "attack", 0.4); - 상태 기반 애니메이션: 캐릭터의 상태에 따라 애니메이션을 전환하여 더 자연스러운 움직임을 구현할 수 있습니다.
gml if (isJumping) { skeleton_animation_mix("walk", "jump", 0.2); } else { skeleton_animation_mix("jump", "walk", 0.2); } - 애니메이션 속도 조절: 애니메이션의 속도를 조절하여 다양한 효과를 줄 수 있습니다.
gml skeleton_animation_set("run"); skeleton_animation_mix("run", "slide", 0.6); - 상호작용 애니메이션: 플레이어가 특정 오브젝트와 상호작용할 때 애니메이션을 전환합니다.
gml if (isInteracting) { skeleton_animation_mix("walk", "interact", 0.3); }
이와 같이 스켈레톤 애니메이션 혼합 기능을 활용하여 다양한 애니메이션 효과를 구현할 수 있습니다.