발사체 생성
이제 발사체가 생성되는 것을 구현해줄 차례이다.
우리는 발사체를 생성되는 것을 VScode 내의 Fire 함수를 통해 하게 된다.
이때 발사체에 적용한 메시를 알아야 하는데, 이는 언리얼 블루프린트를 통해서 설정한 정보이다.
이렇게 블루프린트에서 설정한 정보를 C++에서 접근하기 위해서는 TSubclassOf가 사용된다.
TSubclassOf는 UClass 타입을 반환하게 된다.
UClass 타입은 클래스 타입이지만 C++와 블루프린트 사이 정보를 교환할 수 있는 언리얼 엔진의 리플렉션 시스템과 상호작용이 가능하다.
우리가 액터를 생성하는데 사용할 SpawnActor 함수의 첫 번째 인풋 매개 변수가 이 UClass 타입을 사용하게 된다.
먼저 TSubcalssof를 사용하여 AProjectile2에 기반한 UClass 타입을 반환해주는 변수를 선언해주자.
컴파일하고 언리얼로 돌아가보면, 해당 ProjectileClass에 Projectile에 기반한 C++과 블루 프린트에 대해 선택하여 고를 수 있다.
여기서 우리는 블루 프린트에 저장된 메시에 대한 정보를 얻고 싶기에 블루프린트를 선택한다.
이렇게 하면 BP_Projectile2에 대한 정보를 가진 UClass 타입 변수를 얻게 된 것이다.
이제 Fire() 함수를 구현해보자.
우선 SpawnActor 함수를 통해 구현하게되는데, 해당 함수는 UWorld 클래스에 속한 함수이다.
따라서 GetWorld()를 통해 SpawnActor 함수에 접근하게 된다.
SpawnActor 함수의 인풋 매개 변수는 3가지로 (UClass 타입, 위치, 회전)이다.
위치와 회전에 대해서는 발사체 지점의 위치 위치값과 회전값을 얻으면 된다.
발사체 지점은 컴포넌트이므로 GetComponentLocation 및 GetComponentRotation 함수를 통해 얻게 된다.
이제 컴파일하하고 마우스 좌클릭을 하면 발사체가 생성된다.
마찬가지로 터렛에 대한 Projectile Class도 BP_Projectile2로 바꿔주면 터렛 근처로 갔을 때 터렛에서 발사체가 생성된다.
하지만 말그대로 생성이기에 발사체 지점 위치에 그대로 남아있게 된다.
이에 대한 개선은 다음 강의에 이어서 하게 된다.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-25 (0) | 2024.04.08 |
---|---|
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-24 (0) | 2024.04.08 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-22 (0) | 2024.04.06 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-21 (0) | 2024.04.06 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-20 (0) | 2024.04.05 |