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픽셀입니다.

활용 예제

  1. 다양한 색상 그라디언트 적용
draw_text_ext_transformed_colour(100, 100, "Hello World!", 10, 150, 1, 1, 0, c_red, c_orange, c_yellow, c_green, 1);
  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);
  1. 다중 줄 텍스트 그리기
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);
  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);
  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);