시퀀스 이해하기
시퀀스는 일반적으로 IDE의 시퀀스 편집기를 사용하여 생성되지만, 코드로도 생성하고 편집할 수 있습니다. 시퀀스를 정의하는 방법과 사용되는 다양한 용어를 이해하는 것이 중요합니다.
시퀀스 요소
- 시퀀스 요소: 방의 레이어에 배치되는 요소입니다. 레이어 함수와 함께 사용하기 위해서는 요소 ID 값이 필요합니다.
시퀀스 객체와 인스턴스
- 시퀀스 객체: 자산 브라우저에서 생성하거나
sequence_create함수를 사용하여 생성된 기본 리소스입니다. - 시퀀스 인스턴스: 방의 레이어에 배치된 시퀀스 객체의 "복사본"입니다. 시퀀스 객체는 청사진과 같고, 시퀀스 인스턴스는 그 청사진에서 생성된 것입니다.
시퀀스 데이터
- 시퀀스 데이터: 시퀀스에 대한 모든 데이터를 포함하는 구조체입니다. 트랙, 속성, 재생 속도 등을 포함합니다.
주요 함수
| 함수 이름 | 설명 |
|---|---|
sequence_exists |
시퀀스 존재 여부 확인 |
sequence_create |
새로운 시퀀스 생성 |
sequence_destroy |
시퀀스 삭제 |
sequence_get |
시퀀스 정보 가져오기 |
sequence_track_new |
새로운 트랙 생성 |
sequence_keyframe_new |
새로운 키프레임 생성 |
sequence_keyframedata_new |
키프레임 데이터 생성 |
sequence_get_objects |
시퀀스 객체 가져오기 |
sequence_instance_override_object |
인스턴스 오버라이드 |
시퀀스 생성 예제
새로운 시퀀스를 생성하는 일반적인 방법은 다음과 같습니다:
- 시퀀스 객체 생성:
gml myseq = sequence_create(); - 시퀀스 객체의 상위 값 설정:
gml myseq.length = 120; myseq.loopmode = seqplay_pingpong; - 자산 트랙 생성:
gml var mytracks = array_create(1); mytracks[0] = sequence_track_new(seqtracktype_graphic); - 키프레임 생성 및 추가:
gml var graphickeys = array_create(1); graphickeys[0] = sequence_keyframe_new(seqtracktype_graphic); graphickeys[0].frame = 0; graphickeys[0].length = 1; - 파라미터 트랙 생성:
gml var paramtracks = array_create(1); paramtracks[0] = sequence_track_new(seqtracktype_real); paramtracks[0].name = "position"; - 최종적으로 시퀀스에 트랙 추가:
gml mytracks[0].tracks = paramtracks; myseq.tracks = mytracks; layer_sequence_create("Assets_1", 0, 0, myseq);
활용 예제
예제 1: 스프라이트 애니메이션
var spriteTrack = sequence_track_new(seqtracktype_graphic);
spriteTrack.name = "SpriteAnimation";
var spriteKeys = array_create(2);
spriteKeys[0] = sequence_keyframe_new(seqtracktype_graphic);
spriteKeys[0].frame = 0;
예제 2: 위치 이동
var positionTrack = sequence_track_new(seqtracktype_real);
positionTrack.name = "MovePosition";
var positionKeys = array_create(2);
positionKeys[0] = sequence_keyframe_new(seqtracktype_real);
positionKeys[0].frame = 0;
예제 3: 색상 변화
var colorTrack = sequence_track_new(seqtracktype_color);
colorTrack.name = "ColorChange";
var colorKeys = array_create(2);
colorKeys[0] = sequence_keyframe_new(seqtracktype_color);
colorKeys[0].frame = 0;
이러한 예제들은 시퀀스를 활용하여 다양한 애니메이션 효과를 만드는 데 도움을 줄 수 있습니다.