Unreal

[Unreal] 3월 28일 수업정리

k-codestudy 2025. 3. 28. 13:46

언리얼 블루프린트 통신 정리 (직접 통신)

직접 통신이란?

  • 객체 간 통신 방식 중 하나로, 대상 객체의 포인터를 직접 가져와 함수나 변수에 접근하는 방식

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 사용 가능하지만 과부하 발생 가능

최적의 방법

  1. 오브젝트 타입 구성
  2. 태그로 구별 ( 없어도 무방하지만 있으면 좋은 느낌 )
  3. 인터페이스 또는 다운캐스팅 사용

 

캐릭터 이동 속도 변경

  • 플레이어가 충돌 영역에 들어갔을 때 이동 속도 증가

  • Character Movement 컴포넌트 활용, Character Movement에 모든 이동 관련 설정이 있음

오버랩에 충돌했을 때 속도를 500으로 변경, 충돌범위에서 나오게 되면 속도를 200으로 변경

 

'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