티스토리 뷰

🎨/Unity

[Unity] NPC와 충돌감지하기

eungding 2022. 2. 17. 13:29
반응형

[1] 준비 사항 

우선 스크립트를 작성할 때, 유니티 관련 코드이 자동완성 되도록 Visual Studio를 다운받아주신 후,

Preferences > External Tools > External Script Editor 에 Visual Studio 를 설정해줍니다.

 

 

 

[2] 충돌 감지 문서 살펴보기 

- Collider

- MonoBehaviour.OnControllerColliderHit

 

제가 구글링 한 결과, 

어디에 부딪혀서 둘 중 하나가 파괴되어야하는 경우는 OnCollisionEnter 를 쓰고 (참고: 유니티 유튭 영상)

플레이어가 달리다가 어떤 오브젝트를 만나서 점수가 플러스, 마이너스 되는 경우 또는 오브젝트를 밀어야하는 경우는 OnControllerColliderHit 를 쓰는 것 같아요

 

OnControllerColliderHit 문서에 나오는 것 처럼 

OnControllerColliderHit is called when the controller hits a collider while performing a Move.
This can be used to push objects when they collide with the character.

 

이동 중인 플레이어한테만 OnControllerColliderHit 이 불립니다. (NPC 에서는 사용불가한 듯 해요)

 

 

starter assets의 플레이어에 붙어있는 BasicRigidBody 스크립트를 보면 

OnControllerColliderHit 을 사용하고 있는 것을 볼 수 있습니다. 

 

 

[3]  NPC 충돌 영역 설정

여러가지 방법이 있겠지만, 제가 생각했을 때 가장 간단하고 유지보수 비용이 적을 것 같은? 방법으로 진행해줬어요!

(더 좋은 방법이 있을 수 도 있습니다.)

 

우선 큐브를 만들고 NPCArea 라고 네이밍 해줍니다.

그리고 NPC 와 대화를 시작하게 하고 싶은 영역에 위치시켜줍니다.

 

 

 

그리고 BoxCollider 컴포넌트에 가서 isTriggered를 켜줍니다.

마우스오버 하면 나오는 설명처럼 우리는 triggering events를 위해서만 사용해줄 것입니다. 

 

 

그리고 투명하게 보이도록 Mesh Renderer를 꺼줍니다. 

 

 

[4] 스크립트

이제 저 영역안으로 들어왔을 때를 감지하기 위해 스크립트를 작성해줄게요

NPCAreaController 라는 이름의 스크립트를 만들고 NPC Area 큐브에 붙여줍니다. 

 

스크립트를 열어서 OnTriggerEnter 메세지를 감지해서 충돌한 obejct의 태그를 출력하는 코드를 작성해줍니다.

 

 

그리고 게임을 빌드해봅니다.

플레이어가 NPC Area에 진입하면 Player 태그가 잘 출력되는 것을 볼 수 있습니다. 

 

 

 

 

 

반응형

'🎨 > Unity' 카테고리의 다른 글

[Unity] Xcode Simulator로 빌드하기  (0) 2022.02.17
[Unity] NPC와 대화하기 (1)  (0) 2022.02.17
[Unity] Canvas 와 UI 오브젝트  (0) 2022.02.17
[Unity] Skybox  (0) 2022.02.10
[Unity] Light / Emissive material  (0) 2022.02.10
댓글