본문 바로가기

UnrealEngine

[UE] 컨스트럭트 스크립트, 이벤트 디스패쳐

선 기준 선 위쪽은 위치값을 가지고 있는 컴포넌트들이며, 선 아래는 기능적인 역할만 가지고 있는 컴포넌트 들이다.

 

https://amored8701.tistory.com/127

 

언리얼의 좌표계와 회전

언리얼은 왼손 좌표계이다.Forward = 1, 0, 0Right = 0, 1, 0Up = 0, 0, 1 회전 AixX = RollAixY = PitchAixsZ = Yaw

amored8701.tistory.com


컨스트럭트 스크립트

  • 액터가 레벨에 배치되거나, 움직이거나, 값이 바뀌거나, 언리얼 엔진이 켜질 때 호출된다.
  • 보이는 모양새를 변경시킬 때 사용한다.

⇒ 커스텀 이벤트를 블루프린트 클래스 내부에서 불러내면 디테일 창에 에디터에서 호출 버튼이 생긴다. 이를 체크하면 언리얼 엔진 에디터에서 플레이를 실행하지 않아도 배치된 액터의 디테일 창에서 커스텀 이벤트를 실행시킬 수 있다.


5초 후 액터를 파괴하고 폭발효과 생성.

1~5초의 랜덤 한 시간이 흐른 후 폭발.

각각 다른 방법으로 생성하는 법

⇒ 액터의 루트 컴포넌트에 어떤 컴포넌트가 들어가냐에 따라 액터에 포함되는 컴포넌트가 달라져 같은 액션을 취해도 액터의 위치값의 변화가 달라진다.

⇒ 같은 블루프린트 클래스여도 레벨에 배치된 액터 안의 컴포넌트에서 콜리전 프리셋을 변경시킨다면 서로 다른 결과를 보여줄 수 있다.

언리얼 엔진의 특수한 기능: for문을 생략할 수 있다.

⇒ 컴포넌트 Hit시 Hit 된 액터의 네임태그가 Floor가 아니라면 액터 파괴 후 해당 Hit Location에 폭발 Emitter 호출. Floor가 맞다면 파괴 및 폭발이 실행되지 않는다.

⇒ 위에서 사용된 액터의 tag 생성 방법. 이때 컴포넌트 태그와 액터 태그를 혼동하지 않도록 주의. 해당 액터의 디테일 창에서 태그 설정 가능.

좌측: 대미지를 가하는 쪽 블루프린트 클래스

우측: 대미지를 받는 쪽 블루프린트 클래스

  • Event Causer: 대미지를 주는 근원(총알)
  • Dameged Actor: 대미지를 받는 액터
  • Event instigator: 대미지를 가하는 인스티게이터 (총을 쏜 사람)
  • 컴포넌트 히트 시(Sphere)의 Hit는 구조체로 분할 가능. 로케이션 등과 같은 정보가 들어있음.

좌측: 바닥과 같은 Sphere를 제외한 다른 액터와 부딪힐 경우 공이 없어지며 폭발.

우측: 대미지를 받을 때마다 HP를 1씩 감소시켜 HP가 0이 될 경우 액터파괴 및 폭발 효과.


이벤트 디스패쳐

하나 이상의 이벤트를 Event Dispatcher (이벤트 디스패처)에 바인딩하면, 이벤트 디스패처 호출 시 그 모든 이벤트가 발동되도록 할 수 있다. 이러한 이벤트는 블루프린트 클래스 안에서 바인딩해도 되지만, 이벤트 디스패처를 통해 레벨 블루프린트 안에서 이벤트가 발동되도록 할 수도 있다.

⇒ 바인딩된 이벤트를 모두 실행할 수 있다. 이때 바인딩 함수는 우측 상단의 델리게이트(빨간색 네모)를 통해 연결한다.

 

레벨 블루프린트에서 BP_Cube를 가져와 사용.

https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/Blueprints/UserGuide/EventDispatcher/

 

이벤트 디스패처

블루프린트 클래스가 자신의 상태를 레벨 블루프린트에 보고할 수 있습니다.

docs.unrealengine.com