스프라이트와 타일
게임을 만들 때, 방 편집기에서 배경을 설정하고 인스턴스에 스프라이트를 할당할 수 있지만, 이러한 방법만으로는 유연성이 부족할 수 있습니다. 예를 들어, 메뉴를 그려야 하는 인스턴스가 있을 경우 여러 버튼 스프라이트를 동시에 표시하고 싶을 수 있습니다. 또는 스크롤링 패럴랙스 배경이 있는 게임에서는 코드로 이를 설정할 수 있어야 합니다. 이러한 상황에서는 다음과 같은 함수들을 사용하여 방의 어디에서든 스프라이트와 배경 자산을 그릴 수 있습니다. 이 함수들은 스프라이트의 형태, 크기, 색상 및 알파를 조작하여 특별한 효과를 얻을 수 있도록 합니다.
스프라이트를 인스턴스에 할당하면 기본적으로 GameMaker는 다양한 스프라이트 변수에 의해 주어진 속성으로 그립니다. 그러나 드로우 이벤트에 어떤 내용을 추가하면 "제어권을 가져가는" 것이므로 GameMaker에게 정확히 무엇을 그리고 방의 어디에 그릴지를 알려줘야 합니다. 이를 위해 다음의 함수를 사용해야 합니다:
함수 이름 | 설명 |
---|---|
draw_self | 인스턴스 자신을 그립니다. |
draw_sprite | 스프라이트를 그립니다. |
draw_sprite_ext | 스프라이트를 확장하여 그립니다. |
draw_sprite_general | 일반 스프라이트를 그립니다. |
draw_sprite_part | 스프라이트의 일부를 그립니다. |
draw_sprite_part_ext | 스프라이트의 일부를 확장하여 그립니다. |
draw_sprite_stretched | 늘린 스프라이트를 그립니다. |
draw_sprite_stretched_ext | 확장된 늘린 스프라이트를 그립니다. |
draw_sprite_pos | 위치에 스프라이트를 그립니다. |
draw_sprite_tiled | 타일 형태로 스프라이트를 그립니다. |
draw_sprite_tiled_ext | 확장된 타일 형태로 스프라이트를 그립니다. |
SWF 또는 SVG 형식의 스프라이트를 사용하는 경우, 그릴 때 사용되는 안티 앨리어싱을 제어할 수 있는 추가 옵션도 있습니다. 이러한 스프라이트에 대한 자세한 내용은 "비트맵이 아닌 스프라이트 가져오기"를 참조하세요. 이 함수들은 전역 수준에서 작동하며, 호출된 후에 그려지는 모든 벡터 SWF 또는 SVG 스프라이트에 대한 AA를 설정합니다.
함수 이름 | 설명 |
---|---|
draw_enable_swf_aa | SWF 안티 앨리어싱을 활성화합니다. |
draw_set_swf_aa_level | SWF 안티 앨리어싱 수준을 설정합니다. |
draw_get_swf_aa_level | 현재 SWF 안티 앨리어싱 수준을 가져옵니다. |
draw_enable_svg_aa | SVG 안티 앨리어싱을 활성화합니다. |
draw_set_svg_aa_level | SVG 안티 앨리어싱 수준을 설정합니다. |
draw_get_svg_aa_level | 현재 SVG 안티 앨리어싱 수준을 가져옵니다. |
위에 나열된 함수 외에도, 스켈레탈 애니메이션과 함께 사용하기 위해 설계된 두 개의 특별한 함수가 있습니다. 이러한 스프라이트에 대한 자세한 내용은 "비트맵이 아닌 스프라이트 가져오기"와 "스켈레탈 애니메이션" 섹션을 참조하세요.
함수 이름 | 설명 |
---|---|
draw_skeleton | 스켈레톤을 그립니다. |
draw_skeleton_instance | 스켈레톤 인스턴스를 그립니다. |
draw_skeleton_collision | 스켈레톤 충돌을 그립니다. |
draw_skeleton_time | 스켈레톤 시간에 따라 그립니다. |
타일은 포함된 데이터, 사용된 타일 세트 및 타일 맵 속성에 따라 자동으로 그려집니다. 그러나 다음의 함수를 사용하여 개별 타일이나 타일 맵을 그릴 수 있습니다:
함수 이름 | 설명 |
---|---|
draw_tile | 타일을 그립니다. |
draw_tilemap | 타일 맵을 그립니다. |
활용 예제
스프라이트와 타일을 활용하는 다양한 예제를 살펴보겠습니다.
스프라이트 그리기 예제
// 스프라이트를 기본 위치에 그리기
draw_sprite(sprite_index, 0, x, y);
// 스프라이트를 확대하여 그리기
draw_sprite_ext(sprite_index, 0, x, y, 2, 2, 0, c_white, 1);
타일 그리기 예제
// 특정 타일을 그리기
draw_tile(tile_index, x, y);
// 타일 맵을 그리기
draw_tilemap(tilemap_index);
스켈레탈 애니메이션 예제
// 스켈레톤을 그리기
draw_skeleton(skeleton_index, x, y);
// 스켈레톤 인스턴스를 그리기
draw_skeleton_instance(skeleton_instance);
이와 같은 방법으로 스프라이트와 타일을 활용하여 게임의 다양한 요소를 효과적으로 표현할 수 있습니다.