일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 비교 함수 객체
- operator new
- resource management class
- 참조자
- 언리얼
- 루아
- 오블완
- UE4
- 영화 리뷰
- c++
- Smart Pointer
- Vector
- 예외
- Effective c++
- virtual function
- 게임
- implicit conversion
- 반복자
- 상속
- 메타테이블
- 영화
- effective stl
- 스마트 포인터
- 다형성
- exception
- reference
- 티스토리챌린지
- more effective c++
- lua
- 암시적 변환
- Today
- Total
스토리텔링 개발자
[UE4] 트레이스(Trace) 본문
트레이스
예를 들어 캐릭터 정면에 위치한 오브젝트를 감지해야 한다고 칩시다.
어떤 방식으로 감지해야 할까요.
일직선을 체크해보면 될 것 같긴 한데.
어떤 방식으로 해야 할까요?
네. 바로 트레이스죠.
트레이스란 특정 점을 기준으로 일직선으로 광선을 쏴서 오브젝트를 검출하는 기능입니다.
유니티에서는 Raycast라는 이름으로 부릅니다.
사용
그렇다면 어떻게 트레이스를 사용할 수 있을까요.
언리얼에는 이를 쉽게 사용할 수 있도록 다양한 종류의 함수가 준비되어 있습니다.
일반적으로는 UWorld 객체의 LineTrace 함수 세트들을 사용하면 됩니다.
이름대로 일직선상을 트레이스하는 기능입니다.
UWorld::LineTraceSingleByChannel()
UWorld::LineTraceMultiByChannel()
UWorld::LineTraceSingleByObjectType()
UWorld::LineTraceMultiByObjectType()
....
싱글 / 멀티 히트 반환
라인 트레이스는 두 가지 종류가 있습니다.
각각 Single과 Multi 인데요.
정리하면 아래와 같습니다.
Single : 트레이스에 가장 먼저 검출(블록)된 것만 반환합니다.
Multi : 트레이스에 검출(블록)된 모든 것을 반환합니다.
트레이스의 채널
각 트레이스에는 채널을 설정할 수 있습니다.
채널은 콜리전과도 연관이 있는데요.
자세한 채널 설정 방법은 아래 콜리전 포스팅을 참고해 주세요.
축약하자면 해당 채널에 대한 반응을 각 오브젝트가 설정할 수 있는데,
그 반응이 블록(block)일 때에만 검출하겠다는 의미입니다.
사용 시엔 트레이스 채널로 반응을 확인할 것인지, 오브젝트 타입(오브젝트 채널)으로 반응을 확인할 것인지 선택할 수 있다.
ByChannel : Trace Channel로 검출을 시도합니다.
ForObject : Object Channel로 검출을 시도합니다.
트레이스의 결과
트레이스로 검출이 성공했을 시에는 다음과 같은 값들이 출력됩니다.
Blocking Hit | 콜리전 체크가 블록(block)했는지(오브젝트가 검출되었는지) 여부입니다. | |
Initial Overlap | 초기 겹침 - 일련의 결과 중 첫 번째 오버랩인지 입니다. | |
Time | 시간 - 트레이스 방향 상의 임팩트 시간으로, [0.0 에서 1.0 까지] 범위입니다. 히트가 없는 경우 1.0 을 반환합니다. | |
Location | 위치 - 트레이스 셰이프에 따라 변경된 히트의 월드 스페이스 위치입니다. | |
Impact Point | 임팩트 지점 - 히트 절대 위치입니다. 트레이스 셰이프는 포함하지 않으며, 히트 지점만입니다. | |
Normal | 노멀 - 트레이스 방향입니다. | |
Impact Normal | 임팩트 노멀 - 히트 표면 노멀(법선 벡터)입니다. | |
Phys Mat | 피지컬 머티리얼 - 히트 표면의 피지컬 머티리얼 입니다. | |
Hit Actor | 히트 액터 - 히트 액터 입니다. | |
Hit Component | 히트 컴포넌트 - 특정 히트 컴포넌트 입니다. | |
Hit Bone Name | 히트 본 이름 - 스켈레탈 메시 에 대해 트레이스를 한 경우 히트한 본 이름입니다. | |
Hit Item | 히트 아이템 - 프리미티브의 어느 아이템에 히트했는지 기록하는 프리미티브 전용 데이터입니다. | |
Face Index | 면 인덱스 - 트라이메시 또는 랜드스케이프와 충돌하는 경우, 히트한 면 인덱스입니다. | |
Trace Start | 트레이스 시작 - 트레이스 시작 위치입니다. | |
Trace End | 트레이스 끝 - 트레이스 끝 위치입니다. |
Shape Trace
Line Trace로 충분한 범위를 커버할 수 없는 경우 Shape Trace를 사용하여 좀 더 넓은 범위를 감지할 수 있습니다.
라인 트레이스와 비슷한 감으로 사용할 수 있습니다만, 각 도형의 형태에 따라 추가적인 정보를 입력해 주어야 합니다.
종류는 아래와 같습니다.
1. Box Trace(박스형)
2. Capsule Trace(캡슐형)
3. Sphere Trace(구형)
'개발 > 언리얼 엔진' 카테고리의 다른 글
[UE4] 컴포넌트(Component) (0) | 2021.07.01 |
---|---|
[UE4] 콜리전(Collision) (0) | 2021.06.24 |
[UE4] 순운동학, 역운동학(Forward Kinematics, Inverse Kinematics) (0) | 2021.06.21 |
[UE4] 직렬화(Serialization) (0) | 2021.06.08 |
[UE4] 델리게이트(Delegate) (0) | 2021.06.07 |