sprite_index 변수 설명
sprite_index 변수는 인스턴스에 현재 설정된 스프라이트를 반환합니다. 만약 인스턴스에 스프라이트가 연결되어 있지 않다면 -1을 반환합니다. 이 변수를 사용하여 인스턴스에 다른 스프라이트를 설정할 수 있습니다. 스프라이트는 자산 브라우저에서 참조를 통해 설정하거나 외부에서 로드된 스프라이트를 가진 변수를 사용할 수 있습니다.
스프라이트를 변경해도 현재 표시되고 있는 프레임의 인덱스는 변경되지 않습니다. 이는 새로운 스프라이트에 현재 프레임에 대한 서브 이미지가 존재할 경우에 해당합니다. 예를 들어, 프레임 번호 3에서 스프라이트를 변경하면, 새로운 스프라이트가 그 프레임을 표시하며 그려집니다. 그러나 새로운 스프라이트에 현재 프레임에 대한 서브 이미지가 없다면, image_index는 0으로 초기화되어 스프라이트의 첫 번째 프레임이 표시됩니다.
문법
sprite_index;
반환 값
- 스프라이트 자산
예제
with (obj_Check) {
if !collision_line(x, y, other.x, other.y, obj_Wall, false, true) {
sprite_index = spr_spotted;
} else {
sprite_index = spr_clear;
}
}
위 코드는 "obj_Check"의 모든 인스턴스를 순회하며, 인스턴스 간의 충돌 라인을 확인합니다. 충돌 라인의 반환 값(true 또는 false)에 따라 해당 인스턴스의 스프라이트가 변경됩니다.
활용 예제
예제 1: 스프라이트 변경
if (health < 50) {
sprite_index = spr_low_health;
} else {
sprite_index = spr_normal_health;
}
예제 2: 애니메이션 효과
if (is_running) {
sprite_index = spr_running;
} else {
sprite_index = spr_idle;
}
예제 3: 상태에 따른 스프라이트 변경
if (is_attacking) {
sprite_index = spr_attack;
} else {
sprite_index = spr_idle;
}
예제 4: 충돌에 따른 스프라이트 변경
if (collision_rectangle(x, y, x + width, y + height, obj_enemy, false, true)) {
sprite_index = spr_hit;
} else {
sprite_index = spr_normal;
}
예제 5: 특정 조건에서 스프라이트 변경
if (score >= 100) {
sprite_index = spr_high_score;
} else {
sprite_index = spr_normal;
}
이와 같이 sprite_index 변수를 활용하여 다양한 상황에 맞게 스프라이트를 변경할 수 있습니다.