문제 상황
미사일 런처를 구현하는 중, 플레이어의 조준점을 따라 장전 중인 미사일이 회전하고, 미사일을 발사하는 경우에도 조준점을 향해 날아가도록 구현하고 싶었다.
이에 대해 고민하던 중, Linetrace로 hit point를 검출한 뒤 미사일이 해당 location을 향해 회전하도록 구현하면 될 것 같아 시도해봤다.
기능 이해와 테스트
Linetrace는 출발점부터 도착점까지 보이지 않는 광선을 발사해서 오브젝트를 검출하는 기능이다. 블루프린트에서 활용할 수 있는 Linetrace의 방식은 아래와 같다.
- (Single) Line Trace By Channel : 특정 Trace Channel에 대응하는 최초로 검출된 오브젝트를 반환한다.
- (Single) Line Trace For Objects : 특정 Object Type에 대응하는 최초로 검출된 오브젝트를 반환한다.
- Multi Line Trace By Channel : 특정 Trace Channel에 대응하는 오브젝트를 전부 반환한다.
- Multi Line Trace For Objects : 특정 Object Type에 대응하는 오브젝트를 전부 반환한다.
추가로, 이렇게 Linetrace를 사용하면 그 반환 값은 Object 타입이 아닌 Hit Result 타입인데, 이를 Break Hit Result 노드로 분해해서 Linetrace의 다양한 데이터를 추출할 수 있다.
나는 간단하게 Single Line Trace By Channel 노드와 Break Hit Result 노드로 충돌 location 값을 추출한 뒤, 각 미사일 객체가 Find Look at Rotation 노드를 통해 해당 location을 향해 회전하도록 구현했다. 이는 결과에서 확인해보자.
결과
Linetrace로 발사된 광선이 붉은색으로 그려지고, 해당 광선에 충돌한 오브젝트를 향해 초록색 미사일들이 회전하는 걸 확인할 수 있다.
배운 점
- 테스트 시 Debug Line 잘 활용하면 유용하다. 무언가 안 된다면 머릿속으로 생각하고 있는 개념이 실제 동작 방식과 같은지 꼭 확인해보자.
(번외) 기능 개발이 안 된다고 TIL을 미루지 말자.. 더 하기 싫어진다.
더 알아볼 것들
- Trace Channel
참고 링크
'개발 > 언리얼' 카테고리의 다른 글
[Blueprint] VR 환경에서 HUD를 구성하는 방법 (1) | 2024.01.16 |
---|---|
[Blueprint] 나이아가라 시스템에서 외부 데이터를 변수로 입력 받는 방법 (0) | 2024.01.10 |
[Blueprint] Timeline (0) | 2024.01.03 |
[Blueprint] Enhanced Input Action (0) | 2023.12.30 |
[Blueprint] Projectile Movement (0) | 2023.12.27 |