반응형
[Unity] 유니티 기기 테스트 시 ScreenToWorldPoint 터치 좌표가 이상하게 반영될 때, Unity ScreenToWorldPoint returning weird value.
유니티 ScreenToWorldPoint 사용 시 이상한 값이 계속 나올 때
안녕하세요 정보처리마법사 입니다.
이번 포스팅의 주제는 터치 좌표 관련 디버깅 시 발생하는 문제에 관한 내용입니다.
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
44
45
|
void Update()
{
if (Input.touchCount > 0)
{
// 싱글 터치.
Touch touch = Input.GetTouch(0);
Vector3 touchPos;
switch (touch.phase)
{
case TouchPhase.Began:
// 터치 시작 시.
Vector3 v3 = new Vector3(touch.position.x,touch.position.y,100);
touchPos = Camera.main.ScreenToWorldPoint(v3);
Debug.Log("터치 시작");
Instantiate(Resources.Load("Prefabs/TouchEffect"), touchPos, Quaternion.identity);
Debug.Log("touch.position.x : " + touch.position.x);
Debug.Log("touch.position.y : " + touch.position.y);
//Debug.Log("touch.position.z : " + touch.position.z);
Debug.Log("touchPos.x : " + touchPos.x);
Debug.Log("touchPos.y : " + touchPos.y);
Debug.Log("touchPos.z : " + touchPos.z);
break;
case TouchPhase.Moved:
// 터치 이동 시.
Debug.Log("터치 이동");
break;
case TouchPhase.Stationary:
// 터치 고정 시.
Debug.Log("터치 고정");
break;
case TouchPhase.Ended:
// 터치 종료 시. ( 손을 뗐을 시 )
Debug.Log("터치 종료");
break;
case TouchPhase.Canceled:
// 터치 취소 시. ( 시스템에 의해서 터치가 취소된 경우 (ex: 전화가 왔을 경우 등) )
Debug.Log("터치 취소");
break;
}
}
}
|
cs |
간단히 요약하면,
일단 핵심은 Vector2 타입을 Vector3 타입으로 암묵적으로 형변환할 때 z 값을 0으로 할당하기 때문에
디버깅시 기기에서 터치하는 좌표가 여러 위치를 터치했음에도 불구하고 계속 같은 값만 올라오는 현상이었습니다.
이상으로 포스팅을 마칩니다. 감사합니다.
Fin.
잘 못 된 정보가 있으면 말씀해주세요~
공감버튼 클릭은 작성자에게 큰 힘이 됩니다. 행복한 하루 되세요.
반응형