개발성문

Unity 터치 포인트 좌표에 바운스 볼 생성 (2) - Touch 본문

공부 좀 하자/Unity

Unity 터치 포인트 좌표에 바운스 볼 생성 (2) - Touch

개발성문 2018. 4. 4. 18:02


이전 포스팅에서 대충 내용에 대한 언급이 있었기에 마로 소스를 확인해 보겠습니다.


for(int i = 0; i < Input.touchCount; i++)
        {
            touch = Input.GetTouch(i);

            if (touch.phase == TouchPhase.Began)
            {
                // 1.
                Vector3 pos = Camera.main.ScreenToWorldPoint(touch.position);

                Debug.Log(pos);
                // 2.
                //Instantiate(sphere, pos, Quaternion.identity);

                // 3.
                Instantiate(sphere, new Vector3(pos.x, (pos.y - 3), 0), Quaternion.identity);
            }
        }


Unity 에서 터치 입력을 받기 위해서는 GetTouch()를 사용합니다. 매개 변수로는 int 형의 값을 사용합니다.


Input.GetTouch() 는 특정 터치의 상태를 나타내는 오브젝트를 반환합니다.


반환된 오브젝트에서 Touch의 Phase, 터치의 단계( touch.phase )를 확인 할 수 있습니다.


터치에 대한 가장 최근에 취한 동작을 나타내며, 시작과 끝, 터치 중에 대한 정보를 알 수 있습니다.


TouchPhase 는 손가락의 입력 단계를 나타냅니다.


5개의 단계로 나누어져 있습니다.


 - Began : 화면에 터치를 시작했을 때, 처음 화면에 터치 했을때의 상태입니다.


 - Moved : 화면에 터치 한 상태에서 움직이는 경우를 나타냅니다.


 - Stationary : 화면에 터치는 했지만 움직이지 않을 때의 상태입니다.


 - Ended : 화면에서 손을 떼었을때의 상태입니다.


 - Canceled : 화면에 얼굴을 가져다 데거나, 5개의 터치가 동시에 이루어진 경우에 시스템 적으로 터치의 추적을 취소합니다.


위 내용은 Unity의 Documentation에서 가져왔습니다.(https://docs.unity3d.com/kr/530/ScriptReference/TouchPhase.html)


동영상에서 보았을 때, 필요한 것은 터치한곳의 좌표를 가져와서 그 위치에 새로운 오브젝트를 만들어주는 것이기 때문에


Began 만 있으면 됩니다.


현제 나의 터치 상태가 TouchPhase의 Began 상태인지 확인하여 실행하도록 합니다.


혹시 처음 터치시에 오브젝트를 생성하고 그 오브젝트를 움직이고 싶다면, Moved 상태인지 체크해서 


사용하면 되겠습니다.


Unity 에서 Topuch 를 사용하는데 있어서 중요한 것이 있는데 좌표입니다.


핸드폰에서 터치하는 좌표와 Unity 의 게임세상이 있는 좌표가 달라서 처음 작업을 해보면,


터치한 위치에서 생성되지 않습니다.


위의 소스는 억지로 맞춘것이고, 이어지는 다음 포스팅에서 그 문제에 대해 다뤄보겠습니다.




Comments