행렬 변환 함수 설명
matrix_transform_vertex
함수는 벡터를 행렬로 변환하고 결과를 새로운 배열로 반환하는 기능을 제공합니다. 이 함수는 변환 행렬(함수 matrix_build
에서 반환된)과 변환할 벡터의 x, y, z 값을 인자로 받습니다. 선택적으로 w 성분의 값도 받을 수 있습니다.
반환 값
함수는 제공된 성분의 수에 따라 크기가 같은 배열을 반환합니다: - x, y, z가 제공된 경우: 3개의 요소를 가진 배열 - array[0] = x
- array[1] = y
- array[2] = z
- x, y, z, w가 제공된 경우: 4개의 요소를 가진 배열
array[0] = x
array[1] = y
array[2] = z
array[3] = w
문법
matrix_transform_vertex(matrix, x, y, z, [w]);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
matrix | Matrix Array | 사용할 행렬 |
x | Real | 변환할 벡터의 x 성분 |
y | Real | 변환할 벡터의 y 성분 |
z | Real | 변환할 벡터의 z 성분 |
w | Real | 변환할 벡터의 w 성분 (선택적) |
예제
t_matrix = matrix_build(0, 0, 0, 0, 90, 0, 1, 2, 1);
new_xyz = matrix_transform_vertex(t_matrix, x, y, z);
위 코드는 "t_matrix" 변수에 저장된 행렬을 사용하여 주어진 값을 변환하고, 결과를 배열 new_xyz
에 저장합니다.
활용 예제
- 2D 게임에서의 스프라이트 회전
gml rotation_matrix = matrix_build(0, 0, 0, 0, 45, 0, 1, 0, 0); rotated_position = matrix_transform_vertex(rotation_matrix, sprite_x, sprite_y, 0);
- 3D 객체의 위치 변환
gml translation_matrix = matrix_build(1, 0, 0, 0, 0, 1, 0, 0, 0); new_position = matrix_transform_vertex(translation_matrix, object_x, object_y, object_z);
- 카메라 이동 및 회전
gml camera_matrix = matrix_build(0, 0, 0, 0, 90, 0, camera_x, camera_y, camera_z); camera_view = matrix_transform_vertex(camera_matrix, view_x, view_y, view_z);
- 물체의 스케일 조정
gml scale_matrix = matrix_build(2, 0, 0, 0, 0, 2, 0, 0, 0); scaled_position = matrix_transform_vertex(scale_matrix, object_x, object_y, object_z);
이와 같은 방식으로 matrix_transform_vertex
함수를 활용하여 다양한 변환 작업을 수행할 수 있습니다.