[Unreal] 3월 18일 수업정리
오늘은 콜리전에 대한 수업을 들었다.
콜리전
용어 정리
- 충돌 (Colision) : 맵에서만 사용. 물리적인 충돌을 의미한다.
- 겹침 (Overlap) : 일반적으로 오버랩을 많이 사용한다. 두 개체가 서로 겹쳐 있는 상태를 의미한다
- 히트 (Hit) : 오버랩된 상태에서 특정 반응이 발생하는 경우, 히트는 오버랩을 반응하지만, 오버랩 자체는 히트를 반응하지 않음
- 물리력 (Physics) : 물리적인 힘이 적용되는 경우. 단, 물리는 연출용으로만 사용하고, 게임 시스템을 물리에 사용하지 말 것
이벤트 처리
충돌과 오버랩의 차이
- 충돌은 물리적인 반응을 포함할 수 있다.
- 오버랩은 충돌 없이 이벤트만 발생하는 것이다.
Generate Overlap Events
- 양쪽 모두 Generate Overlap Events 설정이 활성화되어 있어야 오버랩이 발생한다.
히트 반응 여부
- 물리 시뮬레이션이 활성화된 물체가 히트 반응을 받을지 여부를 설정할 수 있다.
충돌 및 오버랩 관리
모든 물리력이 적용되는 충돌은 지형(맵)에서만 사용
칼을 휘둘러 맞은 경우와 지형 출동을 따로 처리해야 관리가 쉬워진다
예를 들어
- 지형 충돌 : 캐릭터 이동을 막음
- 칼 휘두르기 충돌 : 피격 판정만 수행
즉, 각각의 충돌을 따로 관리를 해야지만 관리하기 쉬워진다. 만약 충돌을 겹쳐두면 자기 자신에게 물리력이 걸릴 수 있기에 주의하자.
충돌 예외 상황
레벨에 배치된 오브젝트 vs 런타임 생성 오브젝트 (리스폰)
레밸 배치된 오브젝트는 처음에는 충돌 이벤트를 무시한다
- 예) 에디터에서 직접 배치한 상자, 나무, 장애물 등등 겹치거나 그래도 시작될 때 충돌이 발생하지 않음
- 즉, 시작할 때 첫 충돌을 무시한다.
런타임 중 생성된 오브젝트는 처음부터 충돌 이벤트가 발생한다
- 예) 적이 죽으면 드롭되는 아이템, 스폰되는 몬스터 등은 처음부터 충돌 판정이 활성화된다.
예시) 몬스터 드롭 아이템 충돌 문제
몬스터가 죽으면 아이템을 드롭하는 경우, 아이템은 런타임 중에 생성되는 오브젝트이다.
이때 오버랩 설정을 잘못하면 몬스터의 출동 영역과 아이템의 충돌 영역이 겹쳐서 아이템이 드롭되지 않은 현상이 발생할 수 있다.
- 몬스터가 죽을 때 아이템이 몬스터의 충돌 박스 내부에서 생성됨
- 만약 아이템과 몬스터 모두 Generate Overlap Events가 활성화되어 있다면, 아이템이 즉시 몬스터와 충돌한다고 판단
- 이로 인해 아이템이 드롭되는 대신, 충돌 판정에 의해 사라지거나 이동이 제한될 수 있음
이러한 문제점을 파악하면서 충돌 설정을 하면 될꺼같다.
콜리전 확인 및 설정
단축키
- Alt + C : 콜리전 표시
- Ctrl + B : 배치된 오브젝트의 위치 확인
콜리전
- 단순 콜리전 (Simple Collision): 더블 클릭 후 설정 가능
- 복합 콜리전 (Complex Collision): 와이어프레임 기반 콜리전 (일반적으로 사용하지 않음)
콜리전 생성 방법
콜리전 추가 시 주의점
- 기존 콜리전을 제거하지 않고 계속 추가하면 중복 생성됨.
- 2개의 박스 콜리전을 이용하여 의자에 알맞은 콜리전을 만든 것
컨벡스 콜리전 (Convex Collision)
주로 바위 등 울퉁불퉁한 오브젝트에 사용이 된다.
데이터가 없으면 자동 생성 불가
- 자동 컨벡스 콜리전을 누르게 되면 우측 하단에 컨벡스 분해 창이 뜨게 되고 적용을 누르게 되면 콜리전이 만들어짐
Hidden in Game
- 비활성화하면 충돌 범위를 확인 가능
IK (Inverse Kinematics)와 충돌
IK (인버스 키네마틱)
- 캐릭터가 경사면을 걸을 때 자연스럽게 움직이는 기능.
- 의자 충돌 제거 후 테스트 가능.
- 레이 트레이싱 방식으로 작동 (레이저를 쏘아 충돌 검사).
주의할 점
- 충돌이 안일어나더라도 인버스 키네마틱은 적용이 된다.
플레이어의 충돌 범위를 보게 되면 위에 사진은 떠있는 반면 아래 사진은 떠있지 않다.
하지만 플레이어의 위치는 똑같은 현상을 볼 수 있다.
저런 분명한 차이를 보이기 때문에 충돌과 인버스 키네마틱은 다르게 적용이 되니 알아두자