스프라이트 경계 상자 설정
sprite_set_bbox 함수는 스프라이트의 경계 상자 값을 설정하는 데 사용됩니다. 이 함수는 스프라이트 인덱스와 경계 상자의 왼쪽, 위쪽, 오른쪽, 아래쪽 값을 입력받습니다. 이 값들은 절대값으로, (0, 0) 위치는 스프라이트의 왼쪽 상단 모서리를 의미합니다. 스프라이트의 오프셋이나 "빈" 픽셀, 또는 방에서 그려지는 위치와는 관계없이 설정됩니다.
주의: 이 함수는 스프라이트 자산에 영향을 미쳐, 이후 이 스프라이트를 사용하는 모든 인스턴스가 동일한 경계 상자를 갖게 됩니다.
문법
sprite_set_bbox(ind, left, top, right, bottom);
인수 설명
| 인수 | 유형 | 설명 |
|---|---|---|
| ind | 정수 | 경계 상자를 설정할 스프라이트의 인덱스 |
| left | 정수 | 경계 상자의 왼쪽 값 |
| top | 정수 | 경계 상자의 위쪽 값 |
| right | 정수 | 경계 상자의 오른쪽 값 |
| bottom | 정수 | 경계 상자의 아래쪽 값 |
반환값
이 함수는 반환값이 없습니다.
예제 코드
아래 코드는 스프라이트 인덱스에 할당된 스프라이트의 경계 상자 모드를 확인하고, 만약 수동으로 설정되어 있다면 경계 상자를 변경합니다.
if (sprite_get_bbox_mode(sprite_index) == 2) {
left = irandom(sprite_width / 2);
right = irandom((sprite_width / 2) + irandom(sprite_width / 2));
top = irandom(sprite_height / 2);
bottom = irandom((sprite_height / 2) + irandom(sprite_height / 2));
sprite_set_bbox(sprite_index, left, top, right, bottom);
}
활용 예제
- 스프라이트의 경계 상자 자동 조정
- 게임에서 스프라이트의 크기가 동적으로 변할 때, 경계 상자를 자동으로 조정하여 충돌 감지를 정확하게 할 수 있습니다.
if (sprite_get_bbox_mode(sprite_index) == 2) {
left = 0;
right = sprite_width;
top = 0;
bottom = sprite_height;
sprite_set_bbox(sprite_index, left, top, right, bottom);
}
- 스프라이트의 경계 상자를 랜덤하게 설정
- 스프라이트의 경계 상자를 랜덤하게 설정하여 다양한 효과를 줄 수 있습니다.
left = irandom(10);
right = irandom(sprite_width - 10);
top = irandom(10);
bottom = irandom(sprite_height - 10);
sprite_set_bbox(sprite_index, left, top, right, bottom);
- 스프라이트의 경계 상자 시각화
- 디버깅 목적으로 스프라이트의 경계 상자를 시각적으로 표시할 수 있습니다.
draw_rectangle(sprite_get_bbox_left(sprite_index),
sprite_get_bbox_top(sprite_index),
sprite_get_bbox_right(sprite_index),
sprite_get_bbox_bottom(sprite_index),
false);
- 스프라이트의 경계 상자 변경에 따른 반응
- 경계 상자가 변경될 때 특정 이벤트를 발생시킬 수 있습니다.
if (sprite_get_bbox_mode(sprite_index) == 2) {
// 특정 이벤트 발생
show_message("경계 상자가 변경되었습니다!");
}