GAME MAKER 강좌
KAYAN
게임메이커는 기본적으로 2D전용 툴입니다.
하지만 약간의 3D기능을 지원하는데, 사용하기에 따라 FPS, 롤플레잉, 액션, 또는 퍼즐게임 등
다양한 게임을 만들 수도 있습니다.
(▲ 게임메이커는 2D 전용이지만, 어느 정도의 3D도 지원함.)
우선 3D기능을 사용하기 전에, 2D의 기능들을 어느정도 사용해보시는 것을 권장합니다.
3D는 2D 게임에 비해 제작 난이도가 높기도 하거니와 대부분이 2D기능을 응용해서 사용하기
때문이지요. 그리고 3D는 보이지 않는 부분도 설정해야 하기 때문에 2D를 어느정도 다룰 줄
안다면(좌표의 이해 및 변수 설정, 오브젝트 배치 및 이동 설정 등) 더 좋겠지요.
(▲ 룸 배치 화면. 3D 게임이지만 배치는 2D로 해야함.)
이제 3D의 기능을 약간 들여다봅시다.
◈ 3D좌표
3D의 좌표는 x,y,z의 좌표를 사용합니다.
하지만, 게임메이커는 2D전용툴이라 x,y좌표만 기본적으로 지원되고, z축은 레이어의 깊이(depth)값이
z축에 반영됩니다(다만, z라는 변수는 없습니다).
z축은 사용자가 직접 정의하여 사용해도 됩니다.
복잡한 것은 아니고, 오브젝트의 Create 이벤트에서,
z=0; |
이와 같이 변수를 선언 후에 z좌표를 사용하면 됩니다. 간단하죠.
◈ 3D 카메라
이제 본격적으로 카메라 설정에 대해 알아보도록 합시다.
3D 는 카메라를 3D 화면으로 표시하는 과정을 거쳐야 3D로 보여질 수 있습니다.
게임메이커에서 다양한 카메라 설정이 지원됩니다. 하지만 그 모든 설정에 대해 알아볼 필요는 없습니다.
필요한 몇가지 기능만 알고 있으면 3D 카메라를 구현할 수 있지요.
3D 카메라를 구성하려면 먼저, 원근법(perspective) 설정과 그에 관련된 행렬(matrix)설정을
해주어야 합니다.
원근법 설정: camera_set_proj_mat(camera_id, matrix) camera_id : 적용할 카메라 id (예: camera_view[0], 또는 camera_get_active( )) matrix : 사용할 행렬 행렬(matrix) 설정: matrix_build_projection_perspective_fov(fov_y, aspect, znear, zfar) fov_y : 시야각 (-90 ~ 90 사이의 값. 0제외. 보통 음수값으로 지정하며 -45으로 설정.) aspect : 시야의 비율(가로/세로 비율의 음수값으로 지정.) znear :근평면(렌더링이 보이는 최소거리) zfar :원평면(렌더링이 보이는 최대거리) |
fov_y 값은 양수로 지정하면 z축 위쪽이 z-, 아래쪽은 z+가 됩니다.
음수값으로 지정하면 반대로 위쪽이 z+ 아래가 z- 로 설정할 수 있는데, 보통은 음수값 -45 (기본값)를
지정합니다.
[참고] : fov_y값이 -45이하 또는 45 이상이면 시야를 왜곡시켜 표현할 수 있습니다.
(▲ fov_y -45(왼쪽)와 -80(오른쪽)일 때 차이)
aspect 값은 양수로 지정하면 2d에서의 x축 값 좌우(2d에서는 좌=x-, 우=x+)가 서로 바뀌기 때문에,
음수값으로 지정하면 2D 에서 사용하는 값으로 설정할 수 있습니다.
보통은 화면 크기 (-가로/세로) 비율로 설정합니다.
예를 들어 화면 크기가 800X600 일 때
예)화면크기 800X600 projmat = matrix_build_projection_perspective_fov(-45, -800/600, 1, 32000); camera_set_proj_mat(view_camera[0],projmat) |
aspect 값은 -800/600 이 됩니다.
다음은 3D 카메라 뷰 설정을 해주면 됩니다.
카메라 뷰 설정: camera_set_view_mat(camera_id, matrix) camera_id : 적용할 카메라 id (예: camera_view[0], 또는 camera_get_active( )) matrix: 사용할 행렬 행렬(matrix) 설정: matrix_build_lookat(xfrom, yfrom, zfrom, xto, yto, zto, xup, yup, zup) xfrom,yfrom,zfrom : 카메라의 위치 xto,yto,zto : 카메라가 바라보는 위치 xup,yup,zup : 위축이 되는 축을 설정. z축이 위로 향할 경우 (0,0,1)을 설정함 |
matrix_build_lookat 함수의 xfrom, yfrom, zfrom은 카메라의 위치이고, xto, yto, zto는 바라보는
목표지점입니다. xup, yup, zup는 카메라의 위쪽의 시점을 지정하는데, 기본적으로 zup을 1로
xup, yup은 0으로 설정(perspective 설정에 따라 다름)합니다.
(▲ 카메라 위치)
그리고 모든 설정이 끝나면, camera_apply 함수로 활성화 중인 카메라에 적용해주면 됩니다.
camera_apply(camera) 예) camera_apply(view_camera[0]) |
예를 들면, 아래와 같이 할 수 있습니다.
예) 화면크기 800X600 projmat = matrix_build_projection_perspective_fov(-45, -800/600, 1, 32000); camera_set_proj_mat(view_camera[0],projmat);//원근법 설정 xto=320; yto=240; zto=0; viewmat = matrix_build_lookat(x,y,z,xto,yto,zto, 0, 0, 1); camera_set_view_mat(view_camera[0],viewmat);//카메라 설정 camera_apply(view_camera[0]);//카메라에 적용 |
이와 같이하면 현재 위치(x,y,z) 에서 (320, 240,0)을 바라보게 됩니다.
'GameMaker강좌[GMS2] > 3D기능강좌' 카테고리의 다른 글
[게임메이커 강좌-3D강좌][GMS2] 3D 멀티뷰 (6) | 2021.10.17 |
---|---|
[게임메이커 강좌-3D강좌][GMS2]1인칭 탈출게임-2-이동 설정 (4) | 2018.07.31 |
[게임메이커 강좌-3D강좌][GMS2]1인칭 탈출게임-1-시점 설정 (6) | 2018.07.30 |
[게임메이커 강좌-3D강좌][GMS2]3D 기본 모델 (0) | 2018.07.21 |
[게임메이커 강좌-3D강좌][GMS2]3D의 시작-2 (0) | 2018.07.20 |
댓글