언리얼 블루프린트 통신 정리 (직접 통신)
직접 통신이란?
- 객체 간 통신 방식 중 하나로, 대상 객체의 포인터를 직접 가져와 함수나 변수에 접근하는 방식
C++에서는 아래와 같이 객체의 포인터를 저장하거나, 함수 인자로 넘겨서 사용 가능
C_TEST* m_pTest{}; // 멤버 변수로 객체 포인터 저장
void function(C_TEST* pTest); // 함수 인자로 객체 포인터 전달
직접 통신의 핵심
- 대상 객체의 존재를 알고 있어야 한다
- 객체의 포인터를 직접 활용하여 데이터를 주고받는다
전등을 켜고 끄는 기능 구현
기본 구조
- 플레이어가 특정 영역에 들어가면 전등이 켜지고, 나가면 꺼지는 시스템 구현
- Static Mesh(램프) + Point Light(조명) + Sphere Collision(감지 영역)
- StaticMesh: 전등 오브젝트
- PointLight: 실제 조명 (StaticMesh 아래에 배치)
- Sphere Collision: 충돌 감지용 (StaticMesh와 독립적으로 추가)
주의할 점
- 충돌(Overlap) 처리가 필요하다.
- StaticMesh와 Sphere Collision이 서로 충돌할 가능성이 있으므로 적절한 충돌 설정 필요
충돌 처리 (Collision Handling)
- 충돌 이벤트를 개별적으로 처리하는 것이 최적의 방식
예시: 플레이어의 충돌 처리
- 지형과의 충돌
- 아이템과의 충돌
- 피격 판정 충돌
충돌 설정 (Collision Enabled)
- Query Only: 오버랩(Overlap)만 감지, 물리 효과 없음
- Physics Only: 물리 충돌만 감지, 오버랩 없음
- Query & Physics: 둘 다 활성화
플레이어만 감지하도록 설정
- Sphere Collision에서 Pawn만 Overlap 허용, 나머지는 Block 처리
이벤트 블루프린트 처리
- 오버랩 이벤트 발생 시 B 출력
- 오버랩 종료 시 E 출력
조명 및 가시성 설정
- Construction Script에서 Set Light Color로 색 변경 가능
- Set Visibility로 조명(램프) On/Off 설정
- Point Light를 끄고, Rendering에서 Visible 비활성화 (그래야 키고 끄는 게 보임)
- 기본 상태에서는 램프의 불빛을 꺼둠
- 들어가게 되면 불이 켜짐
충돌 관리 시스템 관리
오브젝트 타입 추가 (Object Channels)
실수하면 충돌 설정이 꼬일 수 있으므로 신중히 설정해야 함
프로젝트 설정 변경
- Edit → Project Settings → Collision → Object Channels
- 새로운 오브젝트 타입 추가 (예: LightTrigger)
- 충돌 규칙을 정해 충돌 여부를 설정
태그(Tag) 활용
- 모든 Actor에는 태그(Tag)를 설정할 수 있음
- 특정 오브젝트를 쉽게 구별 가능
- 설정 방법 : 액터 더블 클릭 → Details 패널 → Tags 추가
충돌 이벤트 처리 흐름
- OnHit 이벤트에서 충돌한 객체 구별 (부품(Component): 충돌한 컴포넌트 정보 / 엑터(Actor): 충돌한 대상 정보 )
- Branch 노드 활용 (If 문과 유사)
- 태그 검사 후 특정 로직 실행
다운캐스팅 (Cast To) 주의점
- Cast To BP_ActorName 사용 가능하지만 과부하 발생 가능
최적의 방법
- 오브젝트 타입 구성
- 태그로 구별 ( 없어도 무방하지만 있으면 좋은 느낌 )
- 인터페이스 또는 다운캐스팅 사용
캐릭터 이동 속도 변경
- 플레이어가 충돌 영역에 들어갔을 때 이동 속도 증가
- Character Movement 컴포넌트 활용, Character Movement에 모든 이동 관련 설정이 있음
'Unreal' 카테고리의 다른 글
[Unreal] 4월 1일 수업정리 (0) | 2025.04.01 |
---|---|
[Unreal] 3월 31일 수업정리 (0) | 2025.03.31 |
[Unreal] 3월 27일 수업정리 (0) | 2025.03.27 |
[Unreal] 3월 26일 수업정리 (0) | 2025.03.26 |
[Unreal] 3월 25일 수업정리 (0) | 2025.03.25 |