본문 바로가기
GameMaker강좌[GMS2]/DnD강좌-코딩

[게임메이커 강좌-DnD][GMS2] 시퀸스-2 : 재생이 끝난 시퀸스 자동 제거

by 타락카얀 2021. 10. 15.
728x90

 

 

 

 

 

◈ 재생이 끝난 시퀸스 자동 제거

 

 

시퀸스 자체에서는 제거 기능이 없기 때문에 오브젝트 이벤트에서 시퀸스 제거 기능으로 제거를 해야합니다.

이번에는 재생이 끝난 시퀸스를 자동으로 제거하는 이벤트를 구성해봅시다.

 

 

시퀸스를 제거하려면, 에셋 레이어에 시퀸스가 생성되었는지부터 확인해야 합니다.

먼저 시퀸스를 제거 이벤트를 수행할 오브젝트의 Step 이벤트 또는 End Step 이벤트를 추가합니다.

그리고 레이어에 아래 함수를 호출하여 레이어에 배치된 요소를 체크합니다.

 

   ◎ layer_get_all_elements(layer_id)

 

(▲ 레이어 요소 체크)

 

체크된 요소들은 배열로 반환됩니다.

요소에는 우리가 체크해야 할 시퀸스가 있을 수 있고, 스프라이트 이미지와 같은 다른 에셋이 있을 수도

있습니다. 시퀸스를 제거하기 위해서는 이것을 가려내야 합니다.

 

반환된 요소가 저장된 배열을 체크하기 위해 [For Loop] 반복문을 사용합니다.

 

(▲ 반복문)

 

array_length 함수는 배열의 크기(개수)를 얻을 수 있어요.

 

이제 반복문을 통해 체크하고 있는 레이어의 요소가 시퀸스인지 체크해야 합니다.

 

   ◎ layer_get_element_type(element_id) : 지정한 요소의 종류를 반환합니다.

 

   ◎ layerelementtype_sequence : 시퀸스 타입

 

(▲ 레이어 요소의 종류)

 

layer_get_element_type 함수를 통해 시퀸스인지 확인하고, layer_sequence_is_finished 함수를 사용하여

시퀸스의 재생이 끝났는지 확인합니다.

 

   ◎ layer_sequence_is_finished(sequence_element_id) : 재생 종료 여부

 

(▲ 시퀸스의 재생 종료 확인후 제거)

 

여기에서 layer_sequence_is_finished 함수를 사용하려면, 시퀸스는 왕복재생이 아니어야 합니다.

 

※ 왕복 재생일 경우에는 [Get Sequence Length] 액션으로 반환된 시퀸스의 총 프레임과 [Get Sequence Head] 액션으로 반환된 현재 프레임을 비교 후에 제거하면 됩니다.

 

 

마지막으로 [Destroy Sequence] 액션을 사용하여 시퀸스를 제거하면 됩니다.

 

 

 

 

 

300x250

댓글