매트릭스 스택의 최상위 매트릭스 가져오기
이 문서는 매트릭스 스택에서 현재 최상위 매트릭스를 반환하는 함수인 matrix_stack_top()
에 대해 설명합니다. 이 함수는 최상위 매트릭스를 제거하지 않고 반환합니다. 매트릭스를 제거하려면 matrix_stack_pop()
함수를 사용해야 합니다.
문법
matrix_stack_top();
반환값
- 매트릭스 배열
예제
다음은 두 개의 매트릭스를 생성하고 이를 매트릭스 스택에 푸시한 후, 최상위 매트릭스를 설정하고 스프라이트를 그리는 예제입니다.
var m1 = matrix_build(66, 145, 0, 0, 0, 0, 1, 1, 1);
var m2 = matrix_build(0, 0, 0, 0, 0, image_angle * 6, 1, 1, 1);
matrix_stack_push(m1);
matrix_stack_push(m2);
matrix_set(matrix_world, matrix_stack_top());
draw_sprite(tyre, 0, 0, 0);
matrix_stack_pop();
matrix_stack_pop();
위 코드는 두 개의 새로운 매트릭스를 생성한 후 매트릭스 스택에 푸시합니다. 그런 다음 세계 매트릭스를 스택의 최상위로 설정하고 스프라이트를 그린 후, 변환을 스택에서 팝합니다.
활용 예제
예제 1: 2D 게임에서 캐릭터 회전
var rotation_matrix = matrix_build(0, 0, 0, 0, 0, character_angle, 1, 1, 1);
matrix_stack_push(rotation_matrix);
matrix_set(matrix_world, matrix_stack_top());
draw_sprite(character_sprite, 0, character_x, character_y);
matrix_stack_pop();
예제 2: UI 요소의 위치 조정
var ui_matrix = matrix_build(100, 200, 0, 0, 0, 0, 1, 1, 1);
matrix_stack_push(ui_matrix);
matrix_set(matrix_world, matrix_stack_top());
draw_sprite(ui_sprite, 0, ui_x, ui_y);
matrix_stack_pop();
예제 3: 배경 스크롤링 효과
var background_matrix = matrix_build(0, 0, 0, 0, 0, background_scroll_angle, 1, 1, 1);
matrix_stack_push(background_matrix);
matrix_set(matrix_world, matrix_stack_top());
draw_sprite(background_sprite, 0, background_x, background_y);
matrix_stack_pop();
이러한 예제들은 매트릭스 스택을 활용하여 다양한 그래픽 변환을 적용하는 방법을 보여줍니다.