프로그래밍 공부
작성일
2024. 3. 27. 13:03
작성자
WDmil
728x90

언리얼의 객체에 대한 접두사, 엑터 종류를 이해한다.

엑터를 생성하고, 배치한뒤 머티리얼을 바꾸어본다.


C++ 클래스 생성하기

 메쉬데이터를 생성한다.

 

객체는 엑터를 상속받으며, CPP클래스이다.

위 C++클래스는, 블루프린트의 부모 클래스 선택을 사용하여, 직접이용보다는 간접적으로 상속받아 사용하게 된다.

 


C++ 헤더

객체의 헤더이다.

 

항상 GENERATED_BODY ()이후에 모든 코드가 동작할 수 있도록 한다.

 

UPROPERTY를 통해, 블루프린트와 통신할 수 있도록 사전작업을 진행하여 객체를 생성해주도록 하자.

 

UStaticMeshComponent* 와 Float, UMaterialInstanceDynamic을 사용해서 객체를 생성, 색을 조정할 것 이다.

 

각 변수형태는 블루프린트의 컴포넌트 추가에서 넣을 수 있는 모든 컴포넌트를 말한다.

 

StaticMesh는 말 그대로 원뿔 구체 원통 같은 메쉬를 의미한다.

다이나믹머티리얼은 객체의 머티리얼을 런타임 도중에 바꿀 수 있게 해주는 머티리얼이다.

 

함수또한 선언한다. 일정 시간마다, ChangeColor함수가 실행되어, 다이나믹머티리얼의 Color값을 수정할 것 이다.


생성자 정의

 

생성자를 정의한다.

 

일단, 생성한 모든 객체의 주솟값을 지정해주어야 한다.

 

RootComponent를 Mesh로 지정해서, Mesh를 기본 오브젝트로 지정해준다.

 

그리고, ConstructorHelpers::FObjectFinder를 사용해서, 지정된 형식의 객체를 경로를 찾아 가져와준다.

if( asset.Succeeded()를 통해, 가져옴이 참인지 거짓인지 확인하고, 성공했다면, 지정된 값을 넣어준다.

 

주솟값은 다음과 같이 얻을 수 있다.


Timer 설정.

 

일정 시간마다 객체의 컬러값을 바꾸어야 하기 때문에, Timer를 사용해야 한다. 원하는 함수를 이용하기 위해서는 다음과 같은 방법으로 함수를 찾아내면 된다.

 

1. 원하는 블루프린트를 생성하고, 마우스를 위로 올려 어떤 이름을 가지고있는지, 어떤 라이브러리를 사용하는지 확인한다.

 

2. CPP코드에서 해당 라이브러리를 호출해준다.

3. 해당 라이브러리에서 K2_Set Timer를 사용한다.

위 함수는, 함수오버라이드를 통해 여러갈래로 구분되어있다.


실행 함수 설정

 

위와 같은 방법으로, 원하는 객체의 머티리얼을 시간마다 바꾸게 할 것이다.

 

여기서 UKismetMathLibary는, #include를 통해 선언해준 뒤 가져와준다.

 

RandomUnitVector()를 사용하기 위해서이다.

 

Color는, 머티리얼을 생성하고, 파라미터 이름을 Color로 하였기 때문에 Color이다. 지정된 파라미터를 사용해도 무방하다.


테스트

머티리얼 인스턴스를 통해 객체의 컬러값을 시간마다 재지정해줄 수 있다.


월드 에서 다중 엑터 생성하기

 

이러한 엑터를 재지정하고, 재지정된 엑터를 원하는 위치에 생성할 수 있다.

 

C03_Spawner.h를 생성한다.

TSubclassOf를 사용해여 엑터를 정의해준다.

 

TSubclassOf는, T를 받아와 사용하는 객체로, 쉽게 말하면, 모든 코드를 냅두어도, <>안의 객체만 수정하면 다른 객체를 생성하고 삭제할 수 있기 때문에 코드 재사용성이 높아져서 사용하는 것이다.

 

AC02_Mesh* Meshes[10]를 통해, 생성된 객체가 들어갈 공간을 마련해준다.

 

이 객체는 02_Mesh를 모르므로, 전방선언을 통해 컴파일러가 사용할 수 있도록 해준다.

C++의 BeginPlay를 통해, 객체를 생성하고 위치를 배정해준다.

 

SpawnActor는, 기본엑터 생성 함수이고, World상에 배치함으로, GetWorld()를 통해 World에서 엑터를 스폰해준다.

AC02_Mesh를 통해, 어떤걸 생성할지 알려주고, 

누가 Owner인지, 회전값, 위치값을 지정해준다.

 

그리고, 생성된 객체의 물리효과를 켜준다.


테스트

728x90