Unity 터치 포인트 좌표에 바운스 볼 생성 (2) - Touch
이전 포스팅에서 대충 내용에 대한 언급이 있었기에 마로 소스를 확인해 보겠습니다.
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 의 게임세상이 있는 좌표가 달라서 처음 작업을 해보면,
터치한 위치에서 생성되지 않습니다.
위의 소스는 억지로 맞춘것이고, 이어지는 다음 포스팅에서 그 문제에 대해 다뤄보겠습니다.