Game!

전체 글 (93)

  1. 2022.05.30 [UE] 콜리전 관련 정리

    콜리전은 두 가지로 나눠지며 각각 설정이 가능하다 1. 오브젝트 > 보통 콜리전이 있는 액터를 지칭한다. 일반적인 충돌을 의미 2. 트레이스 (유니티의 RayCast) > Trace : 추적. 직선을 쏴서 무엇이 존재하는지 확인하는 방법이다. 여기에 대한 자세한 내용은 언리얼 문서에 잘 정리되어 있다. https://www.unrealengine.com/ko/blog/collision-filtering 콜리전의 두 가지 타입은 각각 다른 유형의 쿼리 타입을 사용한다. cf. 쿼리 : 닿자마자 충돌로 처리되는 정보들 충돌 관련 함수를 사용할 때 오브젝트를 기준으로 체크할 경우 오브젝트 타입 사용 트레이스를 기준으로 체크할 경우 트레이스 타입 사용 이 타입의 Enum 들은.. 프로젝트 셋팅 -> 콜리전 ->..

  2. 2022.05.26 [UE] UProperty / UFunction

    언리얼 오브젝트 변수 지정 : UPROPERTY( ) EditAnywhere > 어디에서든 디테일 패널에서 확인하고 수정 가능 ( BP 에디터, 레벨에 배치된 거 상관 없음 ) EditInstanceOnly > 레벨에 배치된 (인스턴스된) 객체만 디테일 패널에서 확인하고 수정 가능 EditDefaultOnly > BP 에디터 내부의 디테일 패널에서만 확인하고 수정 가능 VisibleAnyWhere > 수정 불가능. 어디에서든 디테일 패널에서 확인 가능 ( BP 에디터, 레벨에 배치된 거 상관 없음 ) VisibleInstanceOnly > 수정 불가능. 레벨에 배치된 (인스턴스된) 객체만 디테일 패널에서 확인 가능 VisibleDefaultOnly > 수정 불가능. BP 에디터 내부의 디테일 패널에서만 ..

  3. 2022.05.09 [UE] USceneComponent 와 PrimitiveComponent

    UActorComponent 씬에 올릴 수 있는 것들은 모두 액터가 기반이 되어야하며 이 액터들은 각각 다른 유형의 컴포넌트들을 가지게 되는데, 이 모든 컴포넌트에 대한 베이스 클래스이다. 언리얼 엔진에서는 1. 트랜스폼 정보를 가진 액터 컴포넌트를 Scene Component 라고 한다 2. 렌더링 정보를 가진 액터 컴포넌트를 Primitive Component 라고 한다 USceneComponent Transform 정보를 가진다. Actor 또는 USceneComponent 들의 Hierarchical Attachment - 부착을 지원한다. ( 하이어라키 계층 구조를 지원한다 ) 렌더링과 자체 콜리전을 가지지 않는다. 더보기 예를 들어, BP 에 Box 콜리전과 Text 렌더링을 한다고 하자. 사..

  4. 2022.05.09 [UE] 델리게이트와 이벤트

    Unreal C++ 함수 콜백 종류 델리게이트 다이나믹 델리게이트 이벤트 델리게이트는 외부(C++)에서 연결해서 사용 가능 다이나믹 델리게이트는 BP와 연결하기 위해 사용 가능 이벤트는 자신의 클래스에 속해서만 사용 가능 델리게이트 C++ 에서만 사용할 수 있는 콜백 함수 2개의 타입이 있다 ( 싱글 / 멀티 ) 바인딩할 경우, 인자랑 타입이 똑같아야한다. 더보기 델리게이트 생성 싱글 DECLARE_DELEGATE DECLARE_DELEGATE_OneParam DECLARE_DELEGATE_TwoParams DECLARE_DELEGATE_Params DECLARE_DELEGATE_RetVal DECLARE_DELEGATE_RetVal_OneParam ... 멀티 위의 표준과 동일하다. 단, 멀티 표기를 ..

  5. 2022.05.08 [C++] 코드 위치나 정보를 받아오는 매크로 들

    디버깅이 어려운 환경에서는 보통 로그를 찍게 되는데 이때 로그에서 코드의 정보를 출력해주는 매크로를 사용해서 추가 정보를 출력할 수 있다. 표준 C++ 에서 제공 __FUNCTION__ 매크로 현재 함수의 이름을 받아온다 C++ 에서는 함수마다 내부적으로 __func__ 라는 로컬 변수가 정의돼있다. 이 변수는 현재 함수의 이름을 저장하고 있다. __LINE__ 매크로 현재 스크립트의 줄번호를 받아온다 __FILE__ 매크로 현재 소스코드의 파일을 받아온다. EX. CGlobal.h... CPlayer.cpp ... 단, 파일 이름만 출력하지 않고 파일의 전체 경로를 출력하게 된다. ▶ C:\CppProject1\TestGame\Source\MyGame\CPlayer.cpp

 

콜리전은 두 가지로 나눠지며 각각 설정이 가능하다

1. 오브젝트
> 보통 콜리전이 있는 액터를 지칭한다. 일반적인 충돌을 의미

2. 트레이스 (유니티의 RayCast)
> Trace : 추적. 직선을 쏴서 무엇이 존재하는지 확인하는 방법이다.

여기에 대한 자세한 내용은 언리얼 문서에 잘 정리되어 있다.
https://www.unrealengine.com/ko/blog/collision-filtering
콜리전의 두 가지 타입은 각각 다른 유형의 쿼리 타입을 사용한다.

cf. 쿼리 : 닿자마자 충돌로 처리되는 정보들

충돌 관련 함수를 사용할 때
오브젝트를 기준으로 체크할 경우 오브젝트 타입 사용
트레이스를 기준으로 체크할 경우 트레이스 타입 사용

이 타입의 Enum 들은..
프로젝트 셋팅 -> 콜리전 -> Preset -> NoCollision 클릭 시 나오는 유형들의 순서에서 확인할 수 있다.

1. 오브젝트
> EObjectTypeQuery 

2. 트레이스
> ETraceTypeQuery

 

 

 

FHitResult

> 충돌한 녀석의 정보를 받아온다

 

 

UKismetSystemLibrary:: LineTraceSingleByProfile

> 프리셋 이름 기준(Profile)으로 라인 충돌을 체크한다. 

 

 

PrimitiveComponent:: SetCollisionObjectType

> 충돌 체크되는 오브젝트 유형을 설정한다

- 직역 : 이 오브젝트가 이동할 때 사용하는 충돌 채널을 변경

 

 

UKismetSystemLibrary:: SphereTraceMultiForObjects

> 구 형태로 start 에서 end 까지 빗자루 쓸듯 모든 충돌대상을 찾고, 충돌한 모든 정보를 반환한다.

> 직역 : 스피어 형태의 콜리전을 주어진 start 에서 출발하여 end 까지 스윕하여 충돌한 모든 히트 정보를 반환한다.

 

 

▼ 트레이스가 구의 형태? 관련된 내용

더보기

트레이스 체크 시, 광선 하나만 사용할 뿐만 아니라 도형의 형태로 더 많은 충돌을 체크할 수 있음

https://docs.unrealengine.com/4.27/en-US/InteractiveExperiences/Tracing/

 

 

 

StaticMeshComponent:: AddRadialImpulse

> 메쉬에 방사형 충돌 처리를 한다. ( 메쉬에 방사형 힘을 준다는 의미 )

 

 

 

 

 

 

 

'Engine > Unreal' 카테고리의 다른 글

[UE] 애니메이션 관련 정리  (0) 2022.06.20
[UE] 파티클 관련 정리  (0) 2022.05.30
[UE] UProperty / UFunction  (0) 2022.05.26
[UE] USceneComponent 와 PrimitiveComponent  (0) 2022.05.09
[UE] 델리게이트와 이벤트  (0) 2022.05.09
언리얼 오브젝트 변수 지정 : UPROPERTY( )

EditAnywhere
> 어디에서든 디테일 패널에서 확인하고 수정 가능 ( BP 에디터, 레벨에 배치된 거 상관 없음 )

EditInstanceOnly
> 레벨에 배치된 (인스턴스된) 객체만 디테일 패널에서 확인하고 수정 가능

EditDefaultOnly
> BP 에디터 내부의 디테일 패널에서만 확인하고 수정 가능


VisibleAnyWhere
> 수정 불가능. 어디에서든 디테일 패널에서 확인 가능 ( BP 에디터, 레벨에 배치된 거 상관 없음 )

VisibleInstanceOnly
> 수정 불가능. 레벨에 배치된 (인스턴스된) 객체만 디테일 패널에서 확인 가능

VisibleDefaultOnly
> 수정 불가능. BP 에디터 내부의 디테일 패널에서만 확인 가능


BlueprintReadOnly
> BP 에디터에서 노드로 접근 가능. Read 만 가능하므로 Get 함수만 사용 가능
> 액터가 아닌 클래스에서 에디터에 변수를 공개할 때, 적용을 해야 에디터에 나타난다
언리얼 오브젝트 함수 지정 : UFUNCTION( )

BlueprintImplementableEvent
> 헤더파일에 선언만 하고 구현부를 만들지 않는다. 무조건 BP 에서만 구현된다.

BlueprintNativeEvent
> C++ 에서 기본 구현을 만들어야한다. 이때 구현 함수는 뒤에 _Implementation 을 무조건 붙여야한다.
ex. 
UFUNCTION( BlueprintNativeEvent )
     void Test( );
     void Test_Implementation( ); // 기본 구현 작성할 곳

> BP 에서 해당 함수를 오버라이딩하여 구현할 수 있다. BP 에서 별도로 오버라이드 하지 않으면 C++ 의 기본 구현으로 작동된다.

BlueprintCallable
> BP 에서 호출 가능하도록 지정. BP 에디터의 커스텀 이벤트 생성과 동일하다. C++ 에서 작성한 것이라는 차이만 있다.

BlueprintAssignable
> 다이나믹 멀티캐스트에서만 사용 가능하다. 이 지정자를 사용하면.. BP 에서 해당 델리게이트를 검색할 수 있다.

 

'Engine > Unreal' 카테고리의 다른 글

[UE] 파티클 관련 정리  (0) 2022.05.30
[UE] 콜리전 관련 정리  (0) 2022.05.30
[UE] USceneComponent 와 PrimitiveComponent  (0) 2022.05.09
[UE] 델리게이트와 이벤트  (0) 2022.05.09
[UE] Unreal C++ 스크립트 규칙  (0) 2022.05.07

 

 

 

UActorComponent

씬에 올릴 수 있는 것들은 모두 액터가 기반이 되어야하며
이 액터들은 각각 다른 유형의 컴포넌트들을 가지게 되는데,

모든 컴포넌트에 대한 베이스 클래스이다.

언리얼 엔진에서는
1. 트랜스폼 정보를 가진 액터 컴포넌트를 Scene Component 라고 한다
2. 렌더링 정보를 가진 액터 컴포넌트를 Primitive Component 라고 한다

 

USceneComponent

Transform 정보를 가진다.
Actor 또는 USceneComponent 들의 Hierarchical Attachment - 부착을 지원한다.
( 하이어라키 계층 구조를 지원한다 )
렌더링과 자체 콜리전을 가지지 않는다.
더보기

 

USceneComponent 를 가지는 경우

 

예를 들어, BP 에 Box 콜리전과 Text 렌더링을 한다고 하자.

 

사용할 컴포넌트는 각각

- UBoxComponent

- UTextRenderComponent

 

USceneComponent 를 생성하고 사용할 컴포넌트들을 자식으로 붙여.. 계층 구조를 형성할 수 있다.

 

 


USceneComponent 를 사용하여 하이어라키 계층 구조를 형성할 수 있다.
해당 컴포넌트는 Transform 과 부착만 지원하기에, 가벼운 컴포넌트다.

- 부모가되는 SceneComponent 의 Transform 을 조절하여 자식 계층 정보를 일괄 처리할 수 있다.
- 자식의 Transform 을 조절하여 자식의 Transform 정보를 별도로 처리할 수 있다.
▶ 하이어라키 계층 구조를 통한 피벗의 개념

 

 

USceneComponent 없이 UBoxComponent만 생성

 

특별한 컴포넌트를 생성할 때 USceneComponent 하이어라키 계층 구조를 생략할 수 있다.
( USceneComponent 없이 UBoxComponent 만 생성할 수 있다는 것 )

이 경우
해당 BP 를 레벨에 올릴 때 이 특별한 컴포넌트는.. BP 가 생성되는 World Potision 의 중앙에 위치하게 된다.

 

 

 

UPrimitiveComponent

렌더링 정보를 가진다.

SceneComponent 를 상속받는다.
▶ 그래서 Transform 정보도 가지고 있다.

보통 콜리전이나 렌더링되는 유형의 컴포넌트들이 PrimitiveComponene를 상속받는다.

 

 

'Engine > Unreal' 카테고리의 다른 글

[UE] 콜리전 관련 정리  (0) 2022.05.30
[UE] UProperty / UFunction  (0) 2022.05.26
[UE] 델리게이트와 이벤트  (0) 2022.05.09
[UE] Unreal C++ 스크립트 규칙  (0) 2022.05.07
[UE] 언리얼 오브젝트와 UClass  (0) 2022.05.01

 


Unreal C++ 함수 콜백 종류

델리게이트
다이나믹 델리게이트
이벤트

델리게이트는 외부(C++)에서 연결해서 사용 가능
다이나믹 델리게이트는 BP와 연결하기 위해 사용 가능

이벤트는 자신의 클래스에 속해서만 사용 가능

 

 

 

 


델리게이트

C++ 에서만 사용할 수 있는 콜백 함수
2개의 타입이 있다 ( 싱글 / 멀티 )

바인딩할 경우, 인자랑 타입이 똑같아야한다.

더보기
델리게이트 생성

싱글
DECLARE_DELEGATE
DECLARE_DELEGATE_OneParam
DECLARE_DELEGATE_TwoParams
DECLARE_DELEGATE_<Num>Params
DECLARE_DELEGATE_RetVal
DECLARE_DELEGATE_RetVal_OneParam
...

멀티
위의 표준과 동일하다. 단, 멀티 표기를 해야한다.
DECLARE_MULTICAST_DELEGATE
DECLARE_MULTICAST_DELEGATE_OneParam
...
델리게이트 바인딩

싱글
전역 C++ 콜백일 경우
BindStatic 

표준 C++ 클래스 멤버 함수 콜백일 경우
BindRaw 

언리얼 오브젝트 클래스 멤버 함수 콜백일 경우
BindUObject 

UFUONCTION( ) 매크로가 붙어있는 멤버 함수 콜백일 경우
BindUFunction 

멀티
위의 표준과 동일하다. 단, Add 접두사를 사용.

전역 C++ 콜백일 경우
AddStatic 

표준 C++ 클래스 멤버 함수 콜백일 경우
AddRaw 

언리얼 오브젝트 클래스 멤버 함수 콜백일 경우
AddUObject

UFUONCTION( ) 매크로가 붙어있는 멤버 함수 콜백일 경우
AddUFunction
 

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Delegates/
https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Delegates/Multicast/
델리게이트 실행

싱글
Excute

멀티
Broadcast

 

 

 


다이나믹 델리게이트


C++ 와 블루프린트 둘 다 연동해서 사용할 수 있다
( 에디터와 BP 와의 연동으로 사용됨 )
2개의 타입이 있다 ( 싱글 / 멀티 )

다이나믹 델리게이트에 콜백을 등록하기 위해서는, 콜백 함수에 UFUNCTION( ) 매크로가 꼭 있어야한다.

바인딩할 경우, 인자랑 타입이 똑같아야한다.
▶ 다이나믹 델리게이트일 경우 F12 로 찾아서 들어간다.
EX. 
1. OnActorBeginOverlap 에서 f12 를 눌러서 들어간다
2. OnActorBeginOverlap 의 자료형인 FActorBeginOverlapSignature 를 타고 들어간다.
3. 들어가면 여러 디파인이 있는데, 찾는 이벤트의 뒤에꺼를 복사해서 가져온다 (인자랑 타입)
4. 내가 만든 콜백 함수에 그대로 복사해서 넣는다.
더보기
다이나믹 델리게이트 생성

싱글
DECLARE_DYNAMIC_DELEGATE

멀티
DECLARE_DYNAMIC_MULTICAST_DELEGATE
다이나믹 델리게이트 바인딩

싱글
BindDynamic

멀티
AddDynamic
다이나믹 델리게이트 실행

싱글 
Excute

멀티
Broadcast

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Delegates/Dynamic/

 

 

 

이벤트

(C++ 에서만 사용가능한..듯?)

기본적으로 멀티캐스트이다
( 콜백을 1개만 등록하면 싱글이라고 생각할 수 있음 )

등록된 콜백을 모두 한 번에 실행시킨다.

클래스 내부에서만 선언해서 사용한다
▶ 이벤트를 선언한 클래스만 델리게이트로 등록한 이벤트를 선언하고 호출할 수 있다.
더보기
이벤트 생성

DECLARE_EVENT
DECLARE_EVENT_OneParam
...
이벤트 바인딩
(멀티캐스트 델리게이트와 동일하다)

전역 C++ 콜백일 경우
AddStatic

표준 C++ 클래스 멤버 함수 콜백일 경우
AddRaw

언리얼 오브젝트 클래스 멤버 함수 콜백일 경우
AddUObject

UFUONCTION( ) 매크로가 붙어있는 멤버 함수 콜백일 경우
AddUFunction
이벤트 실행

Broadcast​

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Delegates/Events/

 

 

 

 

 

 

 

 

 

'Engine > Unreal' 카테고리의 다른 글

[UE] UProperty / UFunction  (0) 2022.05.26
[UE] USceneComponent 와 PrimitiveComponent  (0) 2022.05.09
[UE] Unreal C++ 스크립트 규칙  (0) 2022.05.07
[UE] 언리얼 오브젝트와 UClass  (0) 2022.05.01
[UE] 리플렉션  (0) 2022.04.30

 

 

디버깅이 어려운 환경에서는 보통 로그를 찍게 되는데
이때 로그에서 코드의 정보를 출력해주는 매크로를 사용해서 추가 정보를 출력할 수 있다.
표준 C++ 에서 제공

 

__FUNCTION__ 매크로

현재 함수의 이름을 받아온다

C++ 에서는 함수마다 내부적으로 __func__ 라는 로컬 변수가 정의돼있다.
이 변수는 현재 함수의 이름을 저장하고 있다.
__LINE__ 매크로

현재 스크립트의 줄번호를 받아온다
__FILE__ 매크로

현재 소스코드의 파일을 받아온다. 

EX.
CGlobal.h... CPlayer.cpp ...
단, 파일 이름만 출력하지 않고  파일의 전체 경로를 출력하게 된다.
▶ C:\CppProject1\TestGame\Source\MyGame\CPlayer.cpp

 

 

 

 

 

 

'Language > C++' 카테고리의 다른 글

[C] C 스타일 파일입출력  (0) 2022.11.12
[C] 문자열 상수  (0) 2022.10.23
[C++] 함수 포인터  (0) 2022.05.06
[C++] 문법 - 범위 지정 연산자  (0) 2022.04.01
C++ for_each 함수  (0) 2018.03.21
1 2 3 4 5 6 7 ··· 19