1 00:00:00,180 --> 00:00:02,807 이 단원에서는 몇 가지 표준 핀치 줌 스타일의 2 00:00:02,807 --> 00:00:04,807 터치 제어에 대해 자세히 3 00:00:04,807 --> 00:00:06,654 살펴보도록 하겠습니다. 4 00:00:07,057 --> 00:00:10,157 카메라에 스크립트를 적용해서 5 00:00:10,157 --> 00:00:11,977 제어해 보겠습니다 6 00:00:12,270 --> 00:00:14,880 씬에서 주 카메라를 선택합니다 7 00:00:15,518 --> 00:00:17,965 그리고 [Add Component] - [New Script]를 클릭해 8 00:00:17,965 --> 00:00:22,260 C# 스크립트를 카메라에 추가합니다 9 00:00:22,663 --> 00:00:25,304 [PinchZoom] 스크립트를 불러올 것입니다 10 00:00:25,680 --> 00:00:29,096 스크립트를 불러오면 [Create]와 [Add]를 클릭합니다 11 00:00:29,720 --> 00:00:31,874 이제 스크립트를 더블 클릭해 12 00:00:31,874 --> 00:00:33,874 열어서 편집할 수 있습니다 13 00:00:34,650 --> 00:00:36,357 클래스의 본문을 제거해 14 00:00:36,357 --> 00:00:38,357 깔끔하게 시작할 수 있도록 합니다 15 00:00:39,023 --> 00:00:42,324 핀치 줌의 원리는 다음과 같습니다 16 00:00:42,617 --> 00:00:44,311 우선 장치에 정확히 터치가 2개인지 17 00:00:44,311 --> 00:00:46,656 확인해야 합니다 18 00:00:47,322 --> 00:00:49,322 그리고 현재와 이전 프레임의 19 00:00:49,322 --> 00:00:51,322 터치간 거리를 20 00:00:51,322 --> 00:00:53,322 파악해야 합니다 21 00:00:54,623 --> 00:00:56,623 터치간 거리가 짧아졌다면 22 00:00:56,623 --> 00:00:59,065 두 터치가 서로 가깝게 이동한 것이므로 23 00:00:59,065 --> 00:01:01,770 줌아웃해야 합니다 24 00:01:02,490 --> 00:01:04,686 마찬가지로 터치간 거리가 길어졌다면 25 00:01:04,686 --> 00:01:07,784 줌인해야 합니다 26 00:01:08,788 --> 00:01:10,941 이 스크립트에서 맨 먼저 해야 할 작업은 27 00:01:10,941 --> 00:01:13,708 일반 float 변수 2개를 생성하는 것입니다 28 00:01:14,208 --> 00:01:15,999 이 변수들을 이용해 줌 속도를 29 00:01:15,999 --> 00:01:17,999 조절할 것입니다 30 00:01:18,499 --> 00:01:20,499 Perspective 및 Orthographic 카메라의 31 00:01:20,499 --> 00:01:23,529 속도를 따로 조절하려면 32 00:01:23,529 --> 00:01:25,529 변수가 2개 필요합니다 33 00:01:26,595 --> 00:01:28,414 이 변수들을 34 00:01:28,414 --> 00:01:30,247 [perspectiveZoomSpeed]와 35 00:01:30,247 --> 00:01:33,039 [orthoZoomSpeed]로 부르기로 합니다 36 00:01:33,677 --> 00:01:37,066 아울러 두 변수에 기본값을 0.5로 부여합니다. 37 00:01:38,188 --> 00:01:40,518 터치 입력이 업데이트 루프와 함께 38 00:01:40,518 --> 00:01:43,160 제때 감지되므로, 업데이트 함수에서 39 00:01:43,160 --> 00:01:45,873 터치 입력을 처리하는 것이 가장 좋습니다. 40 00:01:46,889 --> 00:01:49,685 하지만 장치에 터치가 정확히 2개라면 41 00:01:49,685 --> 00:01:52,408 모든 것을 처리하려 할 것입니다 42 00:01:52,862 --> 00:01:56,995 [Input. touchCount] 속성을 이용해 확인할 수 있습니다 43 00:01:57,882 --> 00:01:59,799 터치가 정확히 2개임을 확인했으므로 44 00:01:59,799 --> 00:02:02,714 이 터치들을 자체 터치 변수에 45 00:02:02,714 --> 00:02:04,951 저장할 수 있습니다 46 00:02:04,951 --> 00:02:07,355 이런 식으로 Input 클래스의 속성에 47 00:02:07,355 --> 00:02:09,355 계속 액세스할 필요가 없습니다 48 00:02:10,297 --> 00:02:13,431 Input 클래스의 [GetTouch] 함수를 이용해 49 00:02:13,431 --> 00:02:15,431 터치에 액세스합니다 50 00:02:15,931 --> 00:02:18,594 터치가 2개뿐이므로 51 00:02:18,594 --> 00:02:22,541 터치 어레이에서 지수 0과 1이 됩니다 52 00:02:23,207 --> 00:02:25,787 그러므로 0과 1을 [GetTouch] 함수로 53 00:02:25,787 --> 00:02:29,813 구문 분석해 이 터치들의 복사본을 확보할 수 있습니다 54 00:02:30,672 --> 00:02:32,466 터치를 확보했으므로 55 00:02:32,466 --> 00:02:34,466 이전 프레임에서 터치의 위치를 56 00:02:34,466 --> 00:02:35,904 파악해야 합니다 57 00:02:36,565 --> 00:02:39,336 터치의 현재 위치를 확인해 델타 위치를 58 00:02:39,336 --> 00:02:41,336 빼면 됩니다 59 00:02:43,134 --> 00:02:45,134 각 프레임의 터치간 거리를 확인하고 60 00:02:45,134 --> 00:02:48,494 해당 정보를 이용해 줌인 또는 줌아웃이 필요한지 61 00:02:48,494 --> 00:02:50,853 결정하려고 합니다 62 00:02:51,519 --> 00:02:54,721 각 프레임의 터치간 거리를 확인하려면 63 00:02:54,721 --> 00:02:56,638 하나의 터치 위치에서 64 00:02:56,638 --> 00:02:58,749 다른 하나의 터치 위치를 빼서 둘 사이의 벡터를 구합니다. 65 00:02:59,621 --> 00:03:03,295 그런 다음 그 벡터를 통해 크기를 확인합니다 66 00:03:03,836 --> 00:03:05,836 벡터 공제값을 괄호에 넣고 67 00:03:05,836 --> 00:03:08,614 [. operator]를 사용해 특정 단계에서 68 00:03:08,614 --> 00:03:10,378 이 작업을 수행할 수 있습니다 69 00:03:11,183 --> 00:03:12,835 델타라는 용어를 사용하는 것은 70 00:03:12,835 --> 00:03:16,623 델타가 두 데이터간 변화를 의미하기 때문입니다 71 00:03:17,827 --> 00:03:19,729 각 프레임의 터치간 거리를 계산했으므로 72 00:03:19,729 --> 00:03:21,729 이제 그 거리 차이를 73 00:03:21,729 --> 00:03:25,064 확인할 수 있습니다 74 00:03:25,647 --> 00:03:29,383 이번에는 빼기 순서가 중요합니다 75 00:03:29,383 --> 00:03:31,383 이전 프레임의 거리에서 현재 프레임의 76 00:03:31,383 --> 00:03:34,826 터치간 거리를 빼겠습니다 77 00:03:35,464 --> 00:03:37,725 현재 프레임의 거리가 78 00:03:37,725 --> 00:03:40,056 이전 프레임의 거리보다 크다면 79 00:03:40,056 --> 00:03:42,056 그 값은 - 가 됩니다 80 00:03:42,515 --> 00:03:45,630 이것은 손가락을 벌린 상태라는 의미입니다 81 00:03:45,630 --> 00:03:47,630 손가락을 벌리면 82 00:03:47,630 --> 00:03:49,630 카메라의 시야가 좁아지고 83 00:03:49,630 --> 00:03:51,187 직교 크기가 작아지면서 84 00:03:51,187 --> 00:03:53,688 줌인됩니다 85 00:03:55,082 --> 00:03:57,747 이 조건에서 시야나 직교 크기를 86 00:03:57,747 --> 00:04:00,683 줄이려고 하므로 87 00:04:00,683 --> 00:04:04,138 이것은 두 값을 빼는 정확한 방법입니다 88 00:04:05,204 --> 00:04:06,786 하지만 카메라 속성을 89 00:04:06,786 --> 00:04:08,621 변경하기 전에 90 00:04:08,621 --> 00:04:11,627 카메라가 [직교 모드] 또는 [원근 모드]인지 91 00:04:11,627 --> 00:04:13,627 확인해야 합니다 92 00:04:13,627 --> 00:04:16,447 [직교 모드]라면 직교 줌 속도를 곱한 93 00:04:16,447 --> 00:04:19,843 거리 변화로 카메라의 직교 크기를 94 00:04:19,843 --> 00:04:23,291 조정할 수 있습니다 95 00:04:24,537 --> 00:04:27,824 또한 카메라의 직교 크기가 0 미만이 되지 않게 96 00:04:27,824 --> 00:04:29,644 할 것입니다 97 00:04:30,062 --> 00:04:32,700 0 미만이면 이미지가 반전됩니다 98 00:04:33,200 --> 00:04:35,337 이를 막기 위해 [Mathf] 클래스의 99 00:04:35,337 --> 00:04:38,706 [Max] 함수를 이용할 것입니다 100 00:04:39,206 --> 00:04:41,206 그러면 주어진 매개변수 중 101 00:04:41,206 --> 00:04:43,206 가장 큰 값을 가져옵니다 102 00:04:43,706 --> 00:04:46,342 카메라의 직교 크기에 이 함수를 부여하고 103 00:04:46,342 --> 00:04:48,342 그 값을 [0.1]로 설정합니다 104 00:04:49,035 --> 00:04:52,536 이런 식으로 크기가 0.1 미만이면 105 00:04:52,536 --> 00:04:55,016 0.1로 설정할 수 있습니다 106 00:04:56,376 --> 00:04:59,970 이제 카메라가 [직교 모드]가 아니라 107 00:04:59,970 --> 00:05:01,970 [원근 모드]임을 확인하고 108 00:05:01,970 --> 00:05:04,584 시야를 변경합니다 109 00:05:05,194 --> 00:05:08,464 같은 양으로 시야를 조절할 수 있지만 110 00:05:08,464 --> 00:05:11,286 원근 줌 속도를 이용합니다 111 00:05:13,029 --> 00:05:15,630 다시 시야를 제한하려고 합니다 112 00:05:15,630 --> 00:05:19,194 하지만 시야는 각도를 의미하므로 113 00:05:19,194 --> 00:05:22,692 0과 180 사이에 고정해야 합니다 114 00:05:23,330 --> 00:05:27,657 이를 위해 [Mathf] 클래스의 [Clamp] 함수를 이용합니다 115 00:05:28,157 --> 00:05:30,157 값은 3개가 필요합니다 116 00:05:30,157 --> 00:05:32,851 우선 원하는 고정값이 있어야 하고, 117 00:05:32,851 --> 00:05:35,201 그 다음에는 최소 허용값과 118 00:05:35,201 --> 00:05:37,781 최대 허용값이 필요합니다 119 00:05:38,834 --> 00:05:41,585 설정값은 카메라의 시야이며 120 00:05:41,585 --> 00:05:44,287 그 값을 0.1과 179.9 사이에 121 00:05:44,287 --> 00:05:46,770 두려고 합니다 122 00:05:48,265 --> 00:05:50,668 자체 핀치 줌 시스템을 구성할 때 123 00:05:50,668 --> 00:05:53,153 여러분은 보다 적합한 시야와 직교 크기 124 00:05:53,153 --> 00:05:55,990 제한을 선택하려고 할 것입니다 125 00:05:56,647 --> 00:05:59,241 여기에서는 스크립트에 표시된 제한값을 이용하고 있습니다 126 00:05:59,241 --> 00:06:01,241 이 값들이 합당한 결과물을 만들 수 있는 127 00:06:01,241 --> 00:06:03,086 한계값이기 때문이죠 128 00:06:03,610 --> 00:06:07,156 스크립트를 모두 살펴보았으므로 이제 테스트를 해보겠습니다 129 00:06:07,977 --> 00:06:10,627 장치가 준비되었고 테스트 설정이 완료된 상태라고 130 00:06:10,627 --> 00:06:12,471 가정합니다 131 00:06:12,471 --> 00:06:14,471 방법은 해당 장치의 설명서를 132 00:06:14,471 --> 00:06:16,471 참조하십시오 133 00:06:17,697 --> 00:06:19,697 이제 [File] - [Build Settings]로 가서 134 00:06:19,697 --> 00:06:21,923 이 프로젝트를 빌드할 것입니다 135 00:06:22,471 --> 00:06:25,043 현재의 씬을 빌드에 추가해야 합니다 136 00:06:25,543 --> 00:06:27,306 아직 씬을 저장하지 않았다면 137 00:06:27,306 --> 00:06:28,939 저장하라는 프롬프트가 표시될 것입니다 138 00:06:29,675 --> 00:06:31,877 그런 다음 [Build And Run]을 클릭합니다 139 00:06:32,723 --> 00:06:35,546 보시다시피 손가락을 모으면 140 00:06:35,546 --> 00:06:37,344 카메라가 줌아웃되고 141 00:06:37,344 --> 00:06:40,137 벌리면 줌인됩니다.