유니티(Unity) 프로그래밍

Unity Collider(Trigger, Collision)

게임첫걸음 2024. 9. 24. 17:18

Inspector창의 Collider

 이전에 충돌감지에서 Collider를 다룬 적이 있습니다. 이번엔 그 Collider를 조금 더 세부적이고 관련된 추가적인 기능들에 대해 알아보겠습니다.

  1. Trigger과 Collider 관계
  2. Cast
  3. Picking
  4. Layer

1. Trigger과 Collider 관계

 Trigger는 수학적 기능이 배제된 상태로 쉽게 설명하면 오브젝트 간 통과하는 기능입니다. 

해리포터 9와 4분의 3 승강장

해리포터에서 등장한 호그와트로 가는 기차역, 9와 3/4 승강장입니다. 여기서 각각 Collider 기능이 어떻게 되어있을까요? 우선 3가지 상황을 그림으로 설명드립니다.

Is Trigger의 기능

1번 상황: Trigger가 둘 다 켜져있을 시, 그대로 통과합니다.

2번 상황: Trigger이 벽만 켜져있을때도, 그대로 통과합니다.

3번 상황: 둘다 Trigger가 켜져있지 않다면, 통과할 수 없습니다.

이제 위의 해리포터 승강장을 게임으로 대입했을 때 두 오브젝트 Trigger Enable/Disable을 알아봅시다.

해리포터 Trigger 적용

해리포터는 움직이는 오브젝트이고 게임으로 치면 플레이어 캐릭터입니다. 일반적인 벽과 물리적인 효과가 있어야 하기 때문에 Is Trigger을 Disable입니다. 9와 4/3은 벽이란 것이 존재는 하지만 통과가 되는 특수한 벽입니다. 그렇기 때문에 Is Trigger을 Enable로 설정합니다.

여기서 중요한 점은 Trigger가 통과만 될 뿐이지 컴퓨터에서는 모두 연산한다는 것입니다. "아, 통과했구나." 이러한 데이터를 가지고 있다는 것을 명심하시기 바랍니다.

 

2. Cast

위에서 아래 순서로 RayCast, BoxCast, SphereCast, CapsuleCast

 RayCast는 충돌 감지 기능이 담긴 가상(매우 중요)의 빔을 쏜다라고 생각하면 됩니다. 위는 대표적인 4가지 종류의 Cast이고 나머지 3개 또한 RayCast와 흡사한 기능을 가지고 있습니다. 게임에선 주로 일정 범위 내에서 상호작용에 대한 것을 다룰 때 응용하여 사용하는 기능입니다. 

 

3. Picking

 Picking은 게임 상에서 오브젝트를 마우스로 특정 지역을 클릭하면 그 쪽으로 이동하게 하는 기법입니다. 과거엔 워크래프트, 스타크래프트이고 현재는 롤, 히오스 등에서 다루는 기능입니다. 

롤 임시 마우스포인트 클릭
3D, 2D 예시

 위의 롤 캐릭터를 특정 지역으로 이동시키려고합니다. 가는 길 도중에 클릭하지 못하고 피해 가야 하는 벽이 존재합니다. 여기서 그걸 어떤 식으로 판단할 수 있을까요? 이제 Layer가 활용됩니다.

 

4. Layer

Inspector의 Tag와 Layer

 유니티 내에서 Inspector창에서 오브젝트를 2가지로 분류할 수 있습니다. Tag와 Layer 두 카테고리의 차이를 알아보겠습니다.

Tag와 Layer

Tag: 각 오브젝트에 맞는 이름표를 달아주는 것

Layer: 오브젝트 간의 카테고리(레벨)을 부여해 주는 것

이라고 간단히 생각하면 되겠습니다.

Player와 Box 오브젝트는 서로 상호작용할 수 있어 같은 카테고리로 Layer: CollisionObject 함께 묶어줬습니다. 롤로 표현하면 챔피언, 정글 몬스터, 미니언 // 벽 최소 두 개의 Layer로 나눌 수 있습니다. 그럼 다시 기존 롤 자료화면으로 돌아가겠습니다.

여기서 RayCast를 사용해 플레이어 캐릭터를 이동시킵니다. RayCast는 충돌 감지 (가상) 빔을 쏜다고 하였죠? RayCast에 특정 Layer가 감지되면 피해서 가라는 조건문을 걸어놓으면 됩니다. 그렇게 되면 

벽 Layer를 요리조리 피하며 검은색 화살표처럼 이동하게 될 겁니다.

 

끝.

'유니티(Unity) 프로그래밍' 카테고리의 다른 글

Unity 카메라  (1) 2024.09.29
Unity Prefabs과 Stack, Queue  (1) 2024.09.26
Unity 충돌감지  (1) 2024.09.20
유니티3D 아날로그 시계  (0) 2024.09.19
Unity3D 추격2  (1) 2024.09.18