본문 바로가기
GameMaker강좌[GMS2]/GMS2기초강좌

[게임메이커 강좌-기초][GMS2] 사용자 숫자 표시 : 스프라이트 폰트

by 타락카얀 2021. 3. 19.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN

 

 

 

 

 

◈ 사용자 숫자 표시

 

 

폰트를 스프라이트 이미지로 구성하여 게임화면에 표시하는 방법에 대해 알아봅시다.

 

(▲ 사용자 폰트 사용)

 

아래와 같이 숫자가 있는 스프라이트 이미지가 있을 때,

 

(▲ 스프라이트 이미지, 문자별로 서브 이미지를 구성)

 

아래의 함수를 사용하면 스프라이트 이미지를 폰트로 추가할 수 있습니다.

 

   ◎ font_add_sprite(spr,first,prop,sep)

 

spr 에 폰트 스프라이트 이미지를 지정하고, first 에 첫번째 문자를 ord 함수를 사용하여 ASCII 코드로

지정합니다.

 

※ 스프라이트 이미지는 문자 이미지를 부분적으로 구성할 수 있으나, 이미지 순서는 ASCII 코드 순서로

구성되어야 합니다.

그리고 폰트는 스프라이트의 서브 이미지에 사용할 문자 수만큼 구성해야 합니다.

 

(▲ ASCII 코드)

 

예를 들어 "0123456789" 이미지가 있을 때, 첫번째 문자(first 인자)는 ord("0"), 또는, ASCII 코드 48 입니다.

 

prop 인자는 폰트의 비례 설정 여부를 지정합니다.

아래와 같이, true (1)을 지정하면 폰트의 이미지의 투명도를 제외한 모양대로 붙여 정렬할 수 있고,

fasle (0) 를 지정하면 스프라이트 이미지의 크기를 기준으로 폰트를 정렬합니다.

 

(▲ prop 비례 설정 차이점)

 

마지막으로 sep 인자는 글자의 간격입니다.

글자가 너무 붙어있어 나열한 글자의 간격을 좀 더 벌리고 싶다면 값을 0보다 크게 설정하면 됩니다.

 

※ 이미지 문자에 포함되지 않는 문자는 표시되지 않습니다.

 

폰트는 글자를 표시하기 전에 추가해야 합니다.

일반적으로 [Game Start 이벤트], 또는 [Room Start 이벤트]에서 1번만 추가하면 게임에서

계속 사용할 수 있습니다.

 


   global. Font = font_add_sprite(spr_HUD_Font, ord("0"), true, 2);

 

추가한 폰트를 게임 글자에 적용하려면 [Draw 이벤트] 또는 [Draw GUI 이벤트]에서

draw_set_font 함수로 폰트를 적용하고, draw_text 함수로 글자를 표시할 수 있습니다.

 


   //Draw GUI 이벤트
  
  
   draw_set_font(global.Font);

   draw_set_color(c_white);
   draw_text(32,32,"0123456789");

 

 

 

 

◈ 확장 함수

 

 

아래 함수를 사용하면 필요한 문자로만 폰트를 구성할 수 있습니다.

 

   ◎ font_add_sprite_ext(spr, string_map, prop, sep)

 

spr 에 폰트로 구성할 스프라이트 이미지를 지정하며, prop 인자는 폰트의  비례 설정 여부를

지정합니다.  font_add_sprite 와 마찬가지로 true (1)을 지정하면 폰트의 이미지의 투명도를 제외한

모양대로 붙여 정렬할 수 있고,  fasle (0) 를 지정하면 스프라이트 이미지의 크기를 기준으로 폰트를 정렬합니다.

 

(▲ 비례 설정)

 

string_map 은 폰트로 구성할 문자를 지정(ASCII 코드 순서와는 상관 없음)하면 됩니다.

그리고 스프라이트 문자 이미지 구성은 함수에 지정한 string_map 순서대로 서브 이미지를 구성하시면 됩니다.

예를 들어, "0123456789" 의 문자를 string_map 으로 설정한다고 했을 때, 스프라이트 이미지의 서브 이미지

0번에는 "0", 서브 이미지 1번에는 "1", ... 등 과 같이 string_map 순서대로 이미지를 구성합니다.

string_map에 "0a2b1c3d" 와 같이 순서가 뒤바뀐 경우도, 문자 추가 순서대로 "0a2b1c3d" 문자 이미지를 구성해야 합니다.

 

※ font_add_sprite 함수는 ASCII 코드 순으로 정렬해야하지만, 이 함수는 string_map 설정으로 사용자가 직접 순서를 정할 수 있습니다.

 

※ 스프라이트 이미지에 포함되지 않는 문자는 표시되지 않으며, 순서대로 구성하지 않은 경우 제대로 표시되지 않을 수 있습니다.

 


   global. Font = font_add_sprite_ext(spr_CalcFont, "0123456789+-*/=", true, 2);

 

 

 

 

 

 

 

300x250

댓글