우선 collider 과 rigidbody에 대해 알아야 한다.
이는 리지드바디 - Unity 매뉴얼 (unity3d.com)
리지드바디 - Unity 매뉴얼
Rigidbody 는 GameObject 가 물리 제어로 동작하게 합니다. 리지드바디는 힘과 토크를 받아 오브젝트가 사실적으로 움직이도록 해줍니다. 리지드바디가 포함된 모든 게임 오브젝트는 중력의 영향을
docs.unity3d.com
위와같이 공식 사이트에서 제일 간결하고 정확하게 알려주는듯.
번역이 조금 어색하게 느껴진다면 영어 원문으로 읽는 것이 낫다.
개인적으로 웬만한 정보는 영어로 검색하고 결과를 찾는 것이 좋다고 생각함. 영어공부도 할 겸
아무튼 나는 현재 목표물을 향해 게임오브젝트가 이동하는 간단한 예제를 만드는 중인데,
이동의 구현은 쉽지만 충돌 판정, 목표물에의 도착의 표현이 조금 헷갈린다.
그래서 개인적으로 찾아본 것을 메모할 겸 글로 써보는 중이다. 물론 틀린 내용이 있을 수도 있음.
1. 오브젝트들의 물리적인 활용을 위해서는 기본적으로 Collider가 필요하다.
콜라이더의 종류도 여러 가지이지만, 그 중 나는 사각형의 Box Collider 2D 만 일단 사용중이다.
콜라이더는 해당 오브젝트의 물리적인 범위, 즉 충돌 범위를 나타내 준다.
단, 인스펙터 창의 콜라이더 항목에서 Is Trigger 를 체크하면, 해당 콜라이더는 개념적인 존재가 되는데,
마치 스타크래프트 유즈맵에서 볼 수 있는 비컨 등의 장소로 움직이면 이벤트가 발생하는 것에서, 그 비컨이 갖는 것이 Is Trigger인 콜라이더라고 생각하면 될 듯 하다. 물리적인 충돌만 없어진다는 것인듯.
2. 움직이는 물체에는 Rigidbody 를 넣는다.
이건 아직 정확한 개념은 모르겠으나, 중력값이나 토크값 설정 등으로 사실적인 물리현상을 구현해준다는 듯 하다.
참고로 정적인 물체들(지형, 벽) 등에도 static 타입의 rigidbody를 사용한다고도 들었다. 하지만 아직 내 수준은 간단한 예제에서의 사용만 취급하므로, 나중에 깊게 공부할 일이 있다면 그때 다시 메모하도록 하겠음.
3. OnTrigger 와 OnCollision의 차이
두 함수 모두 Enter, Stay, Exit를 뒤에 붙여서 사용하는데,
Enter : 콜라이더 끼리의 접촉(충돌) 시 호출됨
Stay : 콜라이더 끼리 접하고 있는 동안 호출됨
Exit : 콜라이더가 서로 떼어졌을 경우 호출됨
의 의미로, OnTriggerEnter, OnCollisionExit 등과 같이 적절하게 뒤에 붙여 사용한다.
여기서 온트리거와 온콜리전의 차이가 나타나는데,
OnTrigger는 위의 2번에 있는 is trigger 항목을 설정 시에 사용하는 것이다. 트리거와 콜라이더(트리거 포함) 간의 상호작용을 나타낸다.
OnCollision은 기본적인 사용법으로, 두 콜라이더 간의 충돌 작용을 나타낸다.
이게 무슨 차이냐고 물어봐도 사실 나도 잘 모른다.
다만 경험상의 예시로 들어보자면, 예를 들어 내가 쿠키런을 플레이하고 있다고 생각해보자.
캐릭터가 달리면서 젤리들을 먹는 구조인데, 이 때 캐릭터와 젤리 간의 충돌을 표현하는 것이 Collider 이고,
그 상태의 표현을 하려면 OnTriggerEnter 혹은 OnCollisionEnter 를 사용해야 한다.
이 때 젤리를 먹는 판정을 OnCollisionEnter 로 구현하고 충돌 시 젤리가 사라지게 만든다면, 캐릭터가 젤리와 부딪히며 물리적인 충돌(마치 벽에 막힌 듯한) 이 나타나며, 젤리가 사라진 뒤에야 다시 캐릭터가 움직이게 된다고 알고 있다.
단, 여기서 젤리의 콜라이더를 트리거 상태로 놓고 OnTriggerEnter로 해당 부분을 수정한다면, 젤리와 부딪혀서 가로막히는 일 없이 캐릭터는 계속 움직이는 상태로 젤리와의 충돌 상태를 판별하게 된다.
**참고로 OnTrigger 함수는 매개 변수로 Collider를 받고,
**OnCollision 함수는 매개 변수로 Collision을 받는다.
**대충 검색해본 결과 Collider = 해당 오브젝트, Collision = Trigger 와 같은 느낌이려나.
**콜라이더가 더 큰 개념이고, 그 안에 콜리전과 트리거가 있는 것 같다.
일단 여기까지 메모해봄
'게임 > Unity' 카테고리의 다른 글
유니티 개인적인 메모 (0) | 2021.10.30 |
---|
댓글