스프라이트 변형 그리기 함수 설명과 활용 예제
이 문서는 스프라이트를 변형하여 그리는 함수에 대한 설명과 다양한 활용 예제를 포함하고 있습니다. Draw Sprite Transformed 함수는 스프라이트를 그릴 때 추가적으로 스케일, 혼합, 회전 및 프레임을 조정할 수 있는 기능을 제공합니다. 이 값들을 변경하더라도 리소스를 수정하지 않고, 함수의 모든 인자에 대해 직접 값을 사용하기보다는 사용 가능한 스프라이트 속성 변수를 활용할 수 있습니다.
기본 문법
구문
draw_sprite_transformed(sprite, frame, x, y, scale_x, scale_y, rotation, colour);
인자 설명
| 인자 | 설명 |
|---|---|
| Sprite | 그릴 스프라이트 |
| Frame | 그릴 스프라이트의 프레임 (현재 프레임은 내장 변수 image_index 사용) |
| X | 방 안에서 그릴 위치의 X 좌표 |
| Y | 방 안에서 그릴 위치의 Y 좌표 |
| Scale X | X 축의 스케일 비율 (내장 변수 image_xscale 사용) |
| Scale Y | Y 축의 스케일 비율 (내장 변수 image_yscale 사용) |
| Rotation | 스프라이트의 회전 각도 (0 ~ 360도, 시계 반대 방향, 내장 변수 image_angle 사용) |
| Colour | 스프라이트와 혼합할 색상 (기본값은 흰색, 내장 변수 image_blend 사용) |
예제 코드
아래의 예제 코드에서는 변수를 확인하고, true로 설정되어 있다면 스프라이트를 랜덤한 스케일과 빨간색으로 혼합하여 그려집니다. 그렇지 않으면 기본 변환을 사용하여 스프라이트가 그려집니다.
if (is_draw_transformed) {
var scale_x = random(2); // X축의 랜덤 스케일
var scale_y = random(2); // Y축의 랜덤 스케일
var colour = c_red; // 혼합할 색상 (빨간색)
draw_sprite_transformed(sprite, image_index, x, y, scale_x, scale_y, image_angle, colour);
} else {
draw_sprite(sprite, image_index, x, y); // 기본적으로 스프라이트 그리기
}
활용 및 응용 예제
| 예제 번호 | 설명 | 코드 샘플 |
|---|---|---|
| 1 | 스프라이트 회전과 스케일을 적용 | gml<br>draw_sprite_transformed(my_sprite, 0, 100, 150, 1.5, 1.5, 45, c_white); |
| 2 | 색상 혼합으로 시각적 효과 추가 | gml<br>draw_sprite_transformed(my_sprite, 1, mouse_x, mouse_y, 1, 1, 0, c_blue); |
| 3 | 키 입력에 따라 스프라이트 크기 변경 | gml<br>if (keyboard_check(vk_up)) {<br> scale_x += 0.1;<br>}<br>draw_sprite_transformed(my_sprite, 0, 200, 200, scale_x, scale_y, 0, c_white); |
| 4 | 복잡한 배경에서 스프라이트 그리기 | gml<br>draw_sprite_transformed(background_sprite, 0, 0, 0, 1, 1, 0, c_white); |
주의 사항
- 색상 혼합은 HTML5 대상에서만 WebGL이 활성화된 경우에 추천됩니다. WebGL이 활성화되지 않은 경우에도 색상을 설정할 수 있지만 성능 저하가 발생할 수 있습니다.
- 여러 색상 변환을 사용할 경우, 성능 저하를 피하기 위해 WebGL을 활성화하는 것이 좋습니다.
- 필요시 스프라이트 캐시 크기를 조정하려면
sprite_set_cache_size()함수를 사용할 수 있습니다.
이 문서를 통해 변형된 스프라이트를 그리는 방법과 그 활용 예제에 대해 이해할 수 있기를 바랍니다.