-
이 단원에서는 몇 가지
표준 핀치 줌 스타일의
-
터치 제어에 대해 자세히
-
살펴보도록 하겠습니다.
-
카메라에 스크립트를 적용해서
-
제어해 보겠습니다
-
씬에서 주 카메라를 선택합니다
-
그리고 [Add Component]
- [New Script]를 클릭해
-
C# 스크립트를 카메라에 추가합니다
-
[PinchZoom] 스크립트를 불러올 것입니다
-
스크립트를 불러오면
[Create]와 [Add]를 클릭합니다
-
이제 스크립트를 더블 클릭해
-
열어서 편집할 수 있습니다
-
클래스의 본문을 제거해
-
깔끔하게 시작할 수 있도록 합니다
-
핀치 줌의 원리는 다음과 같습니다
-
우선 장치에 정확히 터치가 2개인지
-
확인해야 합니다
-
그리고 현재와 이전 프레임의
-
터치간 거리를
-
파악해야 합니다
-
터치간 거리가 짧아졌다면
-
두 터치가 서로 가깝게 이동한 것이므로
-
줌아웃해야 합니다
-
마찬가지로 터치간 거리가 길어졌다면
-
줌인해야 합니다
-
이 스크립트에서 맨 먼저 해야 할 작업은
-
일반 float 변수 2개를 생성하는 것입니다
-
이 변수들을 이용해 줌 속도를
-
조절할 것입니다
-
Perspective 및 Orthographic 카메라의
-
속도를 따로 조절하려면
-
변수가 2개 필요합니다
-
이 변수들을
-
[perspectiveZoomSpeed]와
-
[orthoZoomSpeed]로 부르기로 합니다
-
아울러 두 변수에 기본값을
0.5로 부여합니다.
-
터치 입력이 업데이트 루프와 함께
-
제때 감지되므로, 업데이트 함수에서
-
터치 입력을 처리하는 것이 가장 좋습니다.
-
하지만 장치에 터치가 정확히 2개라면
-
모든 것을 처리하려 할 것입니다
-
[Input. touchCount] 속성을
이용해 확인할 수 있습니다
-
터치가 정확히 2개임을 확인했으므로
-
이 터치들을 자체 터치 변수에
-
저장할 수 있습니다
-
이런 식으로 Input 클래스의 속성에
-
계속 액세스할 필요가 없습니다
-
Input 클래스의 [GetTouch] 함수를 이용해
-
터치에 액세스합니다
-
터치가 2개뿐이므로
-
터치 어레이에서 지수 0과 1이 됩니다
-
그러므로 0과 1을 [GetTouch] 함수로
-
구문 분석해 이 터치들의
복사본을 확보할 수 있습니다
-
터치를 확보했으므로
-
이전 프레임에서 터치의 위치를
-
파악해야 합니다
-
터치의 현재 위치를 확인해 델타 위치를
-
빼면 됩니다
-
각 프레임의 터치간 거리를 확인하고
-
해당 정보를 이용해 줌인
또는 줌아웃이 필요한지
-
결정하려고 합니다
-
각 프레임의 터치간 거리를 확인하려면
-
하나의 터치 위치에서
-
다른 하나의 터치 위치를 빼서
둘 사이의 벡터를 구합니다.
-
그런 다음 그 벡터를 통해 크기를 확인합니다
-
벡터 공제값을 괄호에 넣고
-
[. operator]를 사용해 특정 단계에서
-
이 작업을 수행할 수 있습니다
-
델타라는 용어를 사용하는 것은
-
델타가 두 데이터간 변화를
의미하기 때문입니다
-
각 프레임의 터치간 거리를 계산했으므로
-
이제 그 거리 차이를
-
확인할 수 있습니다
-
이번에는 빼기 순서가 중요합니다
-
이전 프레임의 거리에서 현재 프레임의
-
터치간 거리를 빼겠습니다
-
현재 프레임의 거리가
-
이전 프레임의 거리보다 크다면
-
그 값은 - 가 됩니다
-
이것은 손가락을 벌린 상태라는 의미입니다
-
손가락을 벌리면
-
카메라의 시야가 좁아지고
-
직교 크기가 작아지면서
-
줌인됩니다
-
이 조건에서 시야나 직교 크기를
-
줄이려고 하므로
-
이것은 두 값을 빼는 정확한 방법입니다
-
하지만 카메라 속성을
-
변경하기 전에
-
카메라가 [직교 모드] 또는 [원근 모드]인지
-
확인해야 합니다
-
[직교 모드]라면 직교 줌 속도를 곱한
-
거리 변화로 카메라의 직교 크기를
-
조정할 수 있습니다
-
또한 카메라의 직교
크기가 0 미만이 되지 않게
-
할 것입니다
-
0 미만이면 이미지가 반전됩니다
-
이를 막기 위해 [Mathf] 클래스의
-
[Max] 함수를 이용할 것입니다
-
그러면 주어진 매개변수 중
-
가장 큰 값을 가져옵니다
-
카메라의 직교 크기에 이 함수를 부여하고
-
그 값을 [0.1]로 설정합니다
-
이런 식으로 크기가 0.1 미만이면
-
0.1로 설정할 수 있습니다
-
이제 카메라가 [직교 모드]가 아니라
-
[원근 모드]임을 확인하고
-
시야를 변경합니다
-
같은 양으로 시야를 조절할 수 있지만
-
원근 줌 속도를 이용합니다
-
다시 시야를 제한하려고 합니다
-
하지만 시야는 각도를 의미하므로
-
0과 180 사이에 고정해야 합니다
-
이를 위해 [Mathf] 클래스의
[Clamp] 함수를 이용합니다
-
값은 3개가 필요합니다
-
우선 원하는 고정값이 있어야 하고,
-
그 다음에는 최소 허용값과
-
최대 허용값이 필요합니다
-
설정값은 카메라의 시야이며
-
그 값을 0.1과 179.9 사이에
-
두려고 합니다
-
자체 핀치 줌 시스템을 구성할 때
-
여러분은 보다 적합한 시야와 직교 크기
-
제한을 선택하려고 할 것입니다
-
여기에서는 스크립트에 표시된
제한값을 이용하고 있습니다
-
이 값들이 합당한 결과물을 만들 수 있는
-
한계값이기 때문이죠
-
스크립트를 모두 살펴보았으므로
이제 테스트를 해보겠습니다
-
장치가 준비되었고 테스트 설정이
완료된 상태라고
-
가정합니다
-
방법은 해당 장치의 설명서를
-
참조하십시오
-
이제 [File] - [Build Settings]로 가서
-
이 프로젝트를 빌드할 것입니다
-
현재의 씬을 빌드에 추가해야 합니다
-
아직 씬을 저장하지 않았다면
-
저장하라는 프롬프트가 표시될 것입니다
-
그런 다음 [Build And Run]을 클릭합니다
-
보시다시피 손가락을 모으면
-
카메라가 줌아웃되고
-
벌리면 줌인됩니다.