본문 바로가기
NOTE/Unity

[Unity] Mobile & Input

by DevAthena 2016. 9. 29.

Unity 홈페이지의 강좌를 정리한 내용입니다.


[Touch]

- Input 클래스를 사용하고, 여러 터치가 들어오면 Array로 처리된다.

- myTouch.deltaPosition은 Vector2의 Last Frame과 First Frame으로 터치의 무빙도 입력받을 수 있다.

using UnityEngine;
using System.Collections;

public class TouchTest : MonoBehaviour 
{
    void Update () 
    {
        Touch myTouch = Input.GetTouch(0);

        Touch[] myTouches = Input.touches;
        for(int i = 0; i < Input.touchCount; i++)
        {
            //Do something with the touches
        }
    }
}


[Accelerometer]

- 모바일의 가속도 센서를 이용해서 물리 방향 관련 정보를 확인 할 수 있습니다. 

- 가속도계의 축은 Unity 상에서의 축과 일치하도록 설정 합니다.

- Y는 수직축 X는 수평축 Z는 깊이축입니다.

transform.Translate(Input.acceleration.x, 0, -Input.acceleration.z);


[Pinch to Zoom]

using UnityEngine; public class PinchZoom : MonoBehaviour { public float perspectiveZoomSpeed = 0.5f; // The rate of change of the field of view in perspective mode. public float orthoZoomSpeed = 0.5f; // The rate of change of the orthographic size in orthographic mode. void Update() { if (Input.touchCount == 2) { Touch touchZero = Input.GetTouch(0); Touch touchOne = Input.GetTouch(1); Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition; Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition; float prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude; float touchDeltaMag = (touchZero.position - touchOne.position).magnitude; float deltaMagnitudeDiff = prevTouchDeltaMag - touchDeltaMag; if (camera.isOrthoGraphic) //직교 { camera.orthographicSize += deltaMagnitudeDiff * orthoZoomSpeed; camera.orthographicSize = Mathf.Max(camera.orthographicSize, 0.1f); } else //원근 { camera.fieldOfView += deltaMagnitudeDiff * perspectiveZoomSpeed; camera.fieldOfView = Mathf.Clamp(camera.fieldOfView, 0.1f, 179.9f); } } } }