레이어 스프라이트 변경 함수
이 문서에서는 레이어의 특정 스프라이트 요소에 할당된 스프라이트 리소스를 변경하는 방법에 대해 설명합니다. 이 함수는 layer_sprite_change()를 사용하여 스프라이트 요소의 ID를 제공하고, 변경할 스프라이트 인덱스를 지정합니다. 스프라이트가 서브 이미지가 있는 경우 애니메이션도 함께 변경됩니다. 애니메이션 속도는 layer_sprite_index()와 layer_sprite_speed() 함수를 사용하여 조절할 수 있습니다. 새로운 스프라이트 인덱스로 -1을 지정하면 스프라이트가 표시되지 않지만, 요소는 여전히 존재하며 나중에 다시 변경할 수 있습니다.
문법
layer_sprite_change(sprite_element_id, sprite_index)
인수 설명
| 인수 이름 | 타입 | 설명 |
|---|---|---|
| sprite_element_id | 스프라이트 요소 ID | 변경할 스프라이트 요소의 고유 ID 값 |
| sprite_index | 스프라이트 자산 | 사용할 새로운 스프라이트 인덱스 |
반환 값
- N/A
활용 예제
다음은 스프라이트 요소의 인덱스를 확인하고, 조건에 따라 스프라이트를 변경하는 예제입니다.
var s = layer_sprite_get_id(layer, global.Asset_sprite);
if (layer_sprite_get_sprite(s) != spr_Nighttime) {
layer_sprite_change(s, spr_nighttime);
}
위의 코드는 global.Asset_sprite에 저장된 ID를 가진 요소의 스프라이트 인덱스를 확인하고, 만약 현재 스프라이트가 spr_Nighttime이 아니라면 spr_nighttime으로 변경합니다.
추가 활용 예제
- 스프라이트 애니메이션 변경
gml var spriteId = layer_sprite_get_id(layer, global.Asset_sprite); layer_sprite_change(spriteId, spr_Animation); - 스프라이트 숨기기
gml var spriteId = layer_sprite_get_id(layer, global.Asset_sprite); layer_sprite_change(spriteId, -1); // 스프라이트 숨기기 - 조건에 따른 스프라이트 변경
gml var spriteId = layer_sprite_get_id(layer, global.Asset_sprite); if (condition) { layer_sprite_change(spriteId, spr_ConditionTrue); } else { layer_sprite_change(spriteId, spr_ConditionFalse); } - 스프라이트 속도 조절
gml var spriteId = layer_sprite_get_id(layer, global.Asset_sprite); layer_sprite_change(spriteId, spr_FastAnimation); layer_sprite_speed(spriteId, 2); // 속도 2배로 설정
이와 같이 layer_sprite_change() 함수를 활용하여 다양한 스프라이트 변경 및 애니메이션 효과를 적용할 수 있습니다.