본문 바로가기
유니티3D

유니티3D - 대화창에서 NPC 를 바라보는 카메라 #1

지난 게시글에서는 NPC곁에 다가가면 대화창이 나오는 부분을 살펴보았었지요.

https://itadventure.tistory.com/426

 

유니티3D - NPC와 대화창 (설명편)

이번 게시글에서는 지난번에 작동해보았던 NPC와 대화창 스크립트에 대한 설명을 드리도록 하겠습니다. https://itadventure.tistory.com/425 유니티3D - NPC와 대화창 지난 게시글에서는 군중 NPC들을 띄우

itadventure.tistory.com

이번 시간에는 대화창에 부가적으로 NPC 를 정면으로 비추는 카메라를 추가하도록 하겠습니다.
내용이 좀 길기 때문에 카메라2의 화면을 대화창에 추가하는 부분을 먼저 진행하겠습니다.

 


유니티에는 2개 이상의 카메라가 존재할 수 있는데요.
기본적인 Main Camera 외에, 개발자가 직접 카메라를 추가하여 별도의 다른 목적으로 사용할 수 있습니다.
이번 시간에는 대화창 UI에 카메라에 비친 NPC의 얼굴을 바라보는 영상 부분을 추가하도록 할텐데요.

먼저 유니티에서 작동되는 단계는 아래와 같습니다.

1. NPC전용 카메라는 Scene의 특정 지역을 촬영합니다.
2. 카메라에 비치는 영상은 Render Texture 에 실시간으로 생중계됩니다.
3. UI 의 Raw Image 에 Render Texture 를 보여줍니다.

4. 플레이어가 NPC 의 트리거에 도달하면 카메라는 NPC 얼굴 앞으로 이동해 NPC 얼굴을 바라보도록 각도를 잡습니다.

5. 카메라에 비친 화상은 UI에 그대로 표시됩니다.

먼저 카메라를 추가해보도록 하겠습니다.
GameObject - Camera 메뉴를 선택해 주세요.

그리고 이름을 NpcCam 으로 지어줍니다. 스크립트에서 이 이름을 활용할 것입니다.

Inspector(인스펙터) 창을 보시면 Audio Listener(오디오 리스너) 컴포넌트가 들어있을텐데요.
이 Audio Listener 는 Main Camera 에도 들어 있습니다.
유니티는 기본적으로 하나의 Audio Listener 만 존재해야 하기 때문에 
Audio Listener 라고 적힌 제목란에서 마우스를 우클릭하여
Remove Component (리무브 컴포넌트: 컴포넌트 삭제) 를 선택해 주세요.

이 것으로 카메라는 2개가 되었지만 이 카메라는 기본적으로 플레이 화면을 비춰줍니다.
그렇기 떄문에 이대로 플레이해보면 Main Camera 는 온데간데 없고 이 카메라의 시점이 바로 화면에 보여집니다.

자, 그렇기 때문에 이 카메라의 시점을 생중계할 대상이 필요한데요.
그것은 바로 Render Texture 라는 것입니다.

Asset - Material 폴더를 선택 후 오른쪽 창에서 마우스 우클릭하여
Create - Render Texture 를 선택해주세요.

그리고 이름을 NPC_Render 라고 지어주세요.

이제 3박자를 진행해 봅시다.
1. 금방 만들었던 카메라를 선택하고.
2. NPC_Render 렌더텍스쳐를 클릭, 마우스를 놓지 않은 상태에서
3. Inspector 창의 Target Texture 란에 드래그해주세요.
그러면 Target Texture 속성이 NPC_Render 로 변경됩니다.

이 것으로 NPCCam 은 카메라에 비치는 화상을 NPC_Render 텍스쳐에 생중계하게 됩니다.
하지만 아직 이 것을 쉽게 확인할 수는 없고 다음 단계를 거쳐야 합니다.

NPC_Render 텍스쳐를 UI에 보여주기 위해서는 Raw Image (로우 이미지) 라는 걸 활용해야 하는데요.

이를 위해 GameObject - UI - Raw Image 를 선택합니다

그리고 금방처럼 NPC_Render 텍스쳐를 Raw Image 의 Texture 속성에 드래그합니다.

※ 참고로 UI 편집과 3D 편집화면을 왔다갔다 하는 방법은 Scene 창의 2D ( 또는 3D ) 부분을 클릭하는 것입니다.

그러면 이와 같이 되었을 것입니다. 바로 이 화상이 NPCCam 이 비추고 있는 실시간 카메라 영상인데요,

정말 그런가 확인해보도록 합시다.
3D 모드에서 NPCCam을 더블클릭하여 선택하고, 위치를 약간 옮겨봅시다.

그리고 다시 2D ui 편집모드로 와보면 아래와 같이 카메라가 비추는 부분이 변경된 것을 알 수 있습니다.

편집모드에서는 정지화면이지만 실시간 플레이중에는 npc의 건들건들 거리는 모습도 볼수가 있지요,

이제 이 Raw Image(로우 이미지)를 Mask 안쪽으로 집어넣어 봅시다.
Hierarchy 창에서 RawImage 를 드래그해 아래와 같이 NPC_Mask 하위에 배치해주세요.

그리고 Inspector 창에서 아래와 같이 속성을 조정해 주세요.

만일 크기를 조장했다면 Width 와 Height는 100이 아닐수도 있는데 적당한 값으로 조정해 주시면 됩니다.
아래와 같이 원안에 꽉차게 들어가면 제대로 된 것입니다.

이제 플레이 중 NPC 에게 다가가면 이와 같은 화면이 뜰 것입니다.
아직 카메라가 NPC 얼굴을 비추지는 않기 때문에 카메라 고정위치가 표시될텐데요.

아직 카메라가 NPC 얼굴 앞을 비추지는 않습니다.
해당 부분은 스크립트가 필요하거든요.

다음 이야기에 또 진행하도록 하겠습니다 :)

필요하신 분에게 도움이 되셨을지 모르겠습니다.
오늘도 여기까지 읽어주셔서 감사합니다 :)


다음 게시글 : 대화창에서 NPC 를 바라보는 카메라 #2

https://itadventure.tistory.com/428

 

유니티3D - 대화창에서 NPC 를 바라보는 카메라 #2

지난 시간에는 Scene(씬)에 카메라를 1대 추가로 세팅하여 캔버스 UI를 통해 월드의 특정 구역을 카메라가 보이는 화면을 띄우는 부분을 살펴보았습니다. 마치 CCTV처럼 말이죠 :) ※ 편의상 쉬운 이

itadventure.tistory.com