본문 바로가기

screentoworldpoint

유니티 각개격파_019_스크린 좌표를 월드 좌표로 변환하기 이전 글에서 스크린 좌표계에서 사용하는 위치와 월드 좌표에서 사용하는 위치는 다르다고 했다. 그래서 월드 좌표에 있는 게임오브젝트와 스크린 좌표계를 사용하는 마우스 포인트의 위치는 서로 상호작용할 수 없다. 여기서는 마우스 포인트 위치를 월드 좌표로 변환하는 코드를 알아본다. 먼저 2D 환경 부터 테스트 해보자. 유니티 허브를 실행한 후 3D 모드의 프로젝트를 하나 만든다. 처음에는 2D 환경으로 테스트 하기 때문에 글을 참고해서 2D환경으로 수정한다. 귀찮으면 그냥 2D 타입으로 프로젝트를 만들고, 3D 타입으로 테스트 할 때는 다시 하나 더 만들어도 상관없다. 여기서는 3D환경을 2D 환경으로 수정하여 테스트 한다. Layout을 2by3으로 바꾼다. Hierarchy창에 Sphere를 하나 만든다... 더보기
유니티 각개격파_014_벡터(Vector)와 이동(Translate)_마우스 이동 계속해서 이번에는 큐브를 마우스를 클릭해서 움직여보자. 큐브에 Movement (움직임)라는 스크립트를 만들어서 컴퍼넌트로 추가한다. Scripts 폴더에 Movement라는 스크립트를 만든 후 큐브에 컴퍼넌트로 붙이거나 큐브에서 바로 Add Component 버튼으로 새 스크립트를 만들 수 있다. 코드 편집에서 다음과 같이 입력한다. 6번 줄에 변수 movingSpeed (이동 속도)를 만들고 초기값은 0으로 한다. private으로 지정해서 이 클래스 밖에서는 호출할 수 없도록 한다. 초기값을 0으로 해 두면 테스트 할 때 매번 이 숫자를 수정해야 하는 번거러움이 생긴다. 이런 경우 SerializeField(직렬화)를 사용할 수 있다. 위 상태에서 5번 줄 처럼 대괄호와 함께 SerializeFie.. 더보기
유니티 각개격파_015_스크린(Screen) 좌표와 World(월드) 좌표 유니티의 space(공간)은 Screen Space(스크린 공간)과 World Space(월드 공간)이 있다. 각각의 공간에서 사용하는 좌표계가 따로 있다. Screen Point 스크린 좌표계는 화면의 width(넓이)와 height(높이)에 따라 x , y 좌표가 정해진다. 화면의 넓이와 높이를 결정하는 해상도의 픽셀(pixel)에 따라 화면에 나타내는 2D 좌표계이다. 예를 들어 Game탭에서 해상도를 800 x 480으로 정했다면 왼쪽 아래의 x, y 좌표는 (0, 0)이고 오른쪽 위가 (800, 480)이다. 마우스 포인터의 위치나 UI를 넣는 캔버스(Canvas) 등이 이 좌표계를 사용한다. 그러므로 마우스로 클릭하는 위치 또는 손가락으로 터치하는 위치를 가져올 때 사용할 수 있다. World.. 더보기