티스토리 뷰

728x90

오늘은 3D 오브젝트를 화면 중앙에 위치시키고 UI처럼 사용하는 방법에 대해 알아보겠습니다.

 

콘솔게임으로 잠입이나 방탈출 같은 게임을 하다보면 특정 오브젝트와 상호작용했을 때 해당 오브젝트가 화면 가운데에 오고 마우스로 이리저리 돌리면서 오브젝트를 관찰하여 단서를 얻는 장면들을 보신적이 있을겁니다.

 

그럼 기존 카메라로 게임화면을 렌더링 하면서 가운데에 중첩해서 3d오브젝트를 렌더링 해야 합니다.

 

여기서 무식하게 카메라의 위치를 기준으로 ScreenToWorld함수 등으로 위치 시키면 어색하고 이상하게 오브젝트가 생성되죠.

 

이 문제를 해결하기 위해 유니티의 렌더 텍스쳐(Render Texture)기능을 사용합니다.

 

1. 먼저 에셋폴더에 새 Render Texture를 생성합니다.

 

2. 그리고 화면 중앙에 올 오브젝트만을 렌더링 하기위한 카메라를 씬에 추가하고 그 하위에 생성할 오브젝트를 만듭니다. 그리고 카메라에 오브젝트가 적당한 크기로 보이도록 위치 시킵니다. 저는 오브젝트로 큐브를 추가하였습니다

3. 그리고 카메라의 속성중 TargetTexture에 생서한 렌더 텍스쳐를 할당합니다.

 

4. 이제 이 카메라가 렌더링하고있는 모습을 화면에 UI처럼 띄우기 위해 Canvas에 빈 오브젝트를 만들고 Raw Image 컴포넌트를 추가합니다

 

5. 해당 Raw Image에도 이전에 생성한 렌더 텍스처를 할당합니다. 그러면 이제 화면에 새로운 카메라의 렌더링 화면이 보입니다. 이것을 원하는 크기로 보이게끔 Raw Image의 크기를 변경합니다.

 

 

6. 뒤에 있는 skybox가 보여 이상합니다. 새로 추가한 카메라의 Clear Flags를 Solid로 변경하여 Skybox를 없애줍니다

이제 완성 되었습니다. 스크립트를 통해 큐브를 마우스의 움직임에 따라 회전 시키면 오브젝트를 관찰하는 모듈을 완성시킬 수 있습니다. 

 

7.결과화면입니다. 큐브를 입체적으로 보이게 회전하였습니다.

지금까지 3d 오브젝트를 화면 가운데에 UI처럼 나오도록 구현하는 방법을 알아 보았습니다.

 

궁금한점 있으시면 댓글로 남겨주시고 도움 되셨다면 좋아요 꼭 부탁드립니다!

댓글