Unity

[Unity] 유니티 기기 테스트 시 ScreenToWorldPoint 터치 좌표가 이상하게 반영될 때, Unity ScreenToWorldPoint returning weird value.

정보처리마법사 2017. 4. 12. 18:02
반응형

 

[Unity] 유니티 기기 테스트 시 ScreenToWorldPoint 터치 좌표가 이상하게 반영될 때, Unity ScreenToWorldPoint returning weird value.

 

 

 

유니티 ScreenToWorldPoint 사용 시 이상한 값이 계속 나올 때

 

 

 

 

이모티콘・01・고양이 마멋 친구들 - Google Play 앱

이모티콘・01・고양이 마멋 친구들: 무료 이모티콘, 회원가입 없이! 카톡, SNS로 감정 표현이 쉬워져요. 귀여움 가득, 대화창을 더 풍성하게!

play.google.com

 

 

안녕하세요 정보처리마법사 입니다.

 

이번 포스팅의 주제는 터치 좌표 관련 디버깅 시 발생하는 문제에 관한 내용입니다.

 

 

 

 

 

 

 

 

 

 

 

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.

 

잘 못 된 정보가 있으면 말씀해주세요~

 

공감버튼 클릭은 작성자에게 큰 힘이 됩니다.  행복한 하루 되세요.

 


 

 

반응형