draw_text_ext_transformed_colour 함수 설명
draw_text_ext_transformed_colour
함수는 기본 draw_text()
함수와 draw_text_ext()
, draw_text_transformed()
, draw_text_colour()
함수의 기능을 결합한 것입니다. 이 함수는 텍스트를 그릴 때 매우 유연성을 제공하는 가장 일반적인 함수입니다.
주요 사항
- "width" 인자는 1의 스케일을 기준으로 하므로, 스케일이 다르면 이 값을 비례적으로 변경해야 합니다. 예를 들어, 줄 바꿈의 기본 너비가 300이고 스케일을 2로 설정하면 텍스트가 잘못 표시되어 주어진 너비를 초과하게 됩니다. 이 경우 너비를 150으로 설정해야 합니다.
- HTML5 타겟에서는 WebGL이 활성화되지 않으면 그라디언트 블렌딩을 사용할 수 없습니다. 그러나 블렌딩 색상을 설정할 수 있으며, 첫 번째 색상과 함께 폰트가 블렌딩됩니다. 이 방식으로 모든 블렌딩은 중복 폰트를 생성하여 캐시에 저장되며, 필요할 때 사용됩니다. 이는 최적의 방법이 아니며, 여러 색상 변경을 사용할 경우 게임 성능이 저하될 수 있습니다. 필요하다면
font_set_cache_size()
함수를 사용하여 폰트 캐시 크기를 설정할 수 있습니다.
함수 문법
draw_text_ext_transformed_colour(x, y, string, sep, w, xscale, yscale, angle, c1, c2, c3, c4, alpha);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
x | 숫자 | 그려질 문자열의 x 좌표 |
y | 숫자 | 그려질 문자열의 y 좌표 |
string | 문자열 | 그릴 문자열 |
sep | 숫자 | 텍스트 줄 사이의 픽셀 거리 |
w | 숫자 | 줄 바꿈 전 문자열의 최대 너비 (픽셀) |
xscale | 숫자 | 수평 스케일 |
yscale | 숫자 | 수직 스케일 |
angle | 숫자 | 텍스트의 각도 |
c1 | 색상 | 그려질 텍스트의 왼쪽 상단 색상 |
c2 | 색상 | 그려질 텍스트의 오른쪽 상단 색상 |
c3 | 색상 | 그려질 텍스트의 오른쪽 하단 색상 |
c4 | 색상 | 그려질 텍스트의 왼쪽 하단 색상 |
alpha | 숫자 | 텍스트의 알파 값 |
예제 코드
draw_set_halign(fa_center);
draw_set_valign(fa_middle);
draw_text_ext_transformed_colour(200, 200, "My name is" + global.name +".", 20, 200, 0.5, 0.5, 180, c_blue, c_blue, c_navy, c_navy, 1);
위 코드는 (200, 200) 위치에 텍스트를 그리며, 텍스트는 파란색에서 어두운 파란색으로 내려가는 그라디언트를 가집니다. 텍스트는 거꾸로 회전되어 있으며, 폰트의 일반 크기 절반으로 표시됩니다. 여러 줄이 그려질 경우 각 줄 사이의 간격은 20픽셀이며, 각 줄의 최대 너비는 200픽셀입니다.
활용 예제
- 다양한 색상 그라디언트 적용
draw_text_ext_transformed_colour(100, 100, "Hello World!", 10, 150, 1, 1, 0, c_red, c_orange, c_yellow, c_green, 1);
- 텍스트 회전 및 스케일 조정
draw_text_ext_transformed_colour(300, 150, "Rotated Text", 15, 250, 1.5, 1.5, 45, c_white, c_gray, c_black, c_black, 0.8);
- 다중 줄 텍스트 그리기
draw_text_ext_transformed_colour(50, 50, "Line 1\nLine 2\nLine 3", 5, 200, 1, 1, 0, c_blue, c_lightblue, c_lightgreen, c_green, 1);
- 게임 내 UI 텍스트 표시
draw_text_ext_transformed_colour(400, 300, "Score: " + string(global.score), 20, 100, 1, 1, 0, c_white, c_yellow, c_orange, c_red, 1);
- 애니메이션 효과 추가
draw_text_ext_transformed_colour(200, 200, "Animating Text", 10, 300, sin(current_time) * 0.5 + 1, 1, current_time % 360, c_purple, c_blue, c_cyan, c_white, 1);