개발공부/유니티
[Unity] 멀티터치로 줌인/줌아웃 구현(ZoomIn/ZoomOut)
정보를드립니다
2020. 4. 3. 20:00
반응형
안녕하세요.
오늘은 모바일 게임에서 멀티터치로 카메라 줌인 / 줌아웃을 구현해보도록 하겠습니다.
줌인/줌아웃이 되는지 확인할 수 있도록 아무 객체나 생성합니다.
저는 큐브를 하나 생성하도록 하겠습니다.
그리고 빈프로젝트를 생성해서 스크립트를 추가하겠습니다.
생성한 스크립트에 다음과 같은 코드를 추가하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TouchManager : MonoBehaviour
{
float m_fSpeed = 0.1f; // 변경 속도를 설정합니다
float m_fFieldOfView = 60f; // 카메라의 FieldOfView의 기본값을 60으로 정합니다.
void Update()
{
CheckTouch();
}
void CheckTouch()
{
if (Input.touchCount == 2)
{
Vector2 vecPreTouchPos0 = Input.touches[0].position - Input.touches[0].deltaPosition;
Vector2 vecPreTouchPos1 = Input.touches[1].position - Input.touches[1].deltaPosition;
// 이전 두 터치의 차이
float fPreDis = (vecPreTouchPos0 - vecPreTouchPos1).magnitude;
// 현재 두 터치의 차
float fToucDis = (Input.touches[0].position - Input.touches[1].position).magnitude;
// 이전 두 터치의 거리와 지금 두 터치의 거리의 차이
float fDis = fPreDis - fToucDis;
// 이전 두 터치의 거리와 지금 두 터치의 거리의 차이를 FleldOfView를 차감합니다.
m_fFieldOfView += (fDis * m_fSpeed);
// 최대는 100, 최소는 20으로 더이상 증가 혹은 감소가 되지 않도록 합니다.
m_fFieldOfView = Mathf.Clamp(m_fFieldOfView, 20.0f, 100.0f);
Camera.main.fieldOfView = m_fFieldOfView;
}
}
}
|
cs |
유니티에서 테스트가 안되기 때문에(테스트하는 방법을 아신다면 댓글 남겨주시면 감사하겠습니다.) 애뮬레이터로 테스트했습니다.
저는 미뮤를 이용하여 테스트했습니다.
가상 키로 터치하는 위치를 정하고 마우스 터치를 하면서 줌인/줌아웃을 확인했습니다.
실행하면 줌인/줌아웃이 제대로 실행되는 것을 확인할 수 있습니다.
반응형