안 쓰던 블로그

유니티 오브젝트 이동(transform.position) 이상한 곳으로 갈 때 해결 방법 본문

유니티/개발

유니티 오브젝트 이동(transform.position) 이상한 곳으로 갈 때 해결 방법

proqk 2020. 1. 30. 19:15
반응형

void setmix(int index, GameObject image)
    {
        float x = mixposition[index, 0];
        float y = mixposition[index, 1];
        float z = mixposition[index, 2];
        image.transform.position = new Vector3(x, y, z);
        //image.transform.localPosition = new Vector3(x,y,z);
        Debug.Log(image.transform.position);
        print(x);
        print(y);
        print(z);
    }

유니티에서 오브젝트를 순간이동 시키려면 보통 vector3로 transform.position에다가 값을 넣을 것임

근데 내 프로젝트에서 image를 그렇게 옮겼더니 캔버스에서 벗어나 이상한 곳으로 튀어나가는 현상이 있었음

 

더 이상한 건, 코드에서 좌표를 아무리 찍어봐도 너무 정확한 위치를 출력하는데

실행해서 오브젝트의 포지션 값을 보면 -220이 아니라 -28160 이런 곳에 가있음ㅋㅋ

 

[해결방법1]

일단 image의 부모인 오브젝트의 위치가 0,0,0인지 확인해서 초기화해줌

 

[해결방법2]

https://answers.unity.com/questions/1570849/transformposition-incorrect.html

 

Transform.position incorrect - Unity Answers

 

answers.unity.com

자식 객체의 위치를 정확하게 옮기려면 transform.localPosition을 사용

 

void setmix(int index, GameObject image)
    {
        float x = mixposition[index, 0];
        float y = mixposition[index, 1];
        float z = mixposition[index, 2];
        image.transform.localPosition = new Vector3(x,y,z);
    }

코드 변경

 

유니티 왼쪽 위에 Local로 변경

 

실행해보면 정확하게 이동하는 것을 확인할 수 있다

반응형
Comments