본문 바로가기
공부/Unreal Engine 5

[언리얼5] CPP 자주사용하는 UKismetSystemLibrary & UKismetMathLibrary 함수

by MY블로그 2024. 5. 17.

언리얼 CPP 프로젝트시 자주 사용하던 KismetSystem, KismetMath 함수 정리

 


여기서 Kismet 이란?

언리얼 엔진에서 Kismet은 언리얼 엔진의 비주얼 스크립팅 시스템인 블루프린트를 지원하는 데 사용되는 기술의 일부입니다. Kismet 시스템은 이전 버전의 언리얼 엔진에서 비주얼 스크립팅을 위해 사용되었으며, 이는 개발자와 디자이너가 프로그래밍 지식이 없이도 게임 로직을 시각적으로 구성할 수 있게 해주는 시스템입니다.

언리얼 엔진 4에서는 Kismet의 개념이 블루프린트 시스템으로 발전했습니다. 블루프린트는 Kismet의 후속작으로 볼 수 있으며, 개선된 인터페이스와 기능들을 제공합니다. 블루프린트 시스템을 통해 개발자들은 시각적인 방식으로 게임의 요소들을 빠르게 프로토타이핑하고, 테스트하며, 구현할 수 있습니다.

UKismetSystemLibrary와 UKismetMathLibrary 같은 클래스들은 이러한 블루프린트 시스템 내에서 사용될 수 있는 다양한 유용한 함수들을 C++ 코드로 제공합니다. 이것은 블루프린트에서 사용할 수 있는 기능과 로직을 C++ 개발자가 사용할 수 있게 해줍니다. 이를 통해 C++ 개발자는 블루프린트에서 사용되는 강력한 기능들을 코드 내에서 바로 사용할 수 있으며, 블루프린트와 C++ 코드 간의 상호 작용을 보다 원활하게 할 수 있습니다.

결론적으로, Kismet은 언리얼 엔진의 비주얼 스크립팅의 역사를 가지고 있으며, 현재는 블루프린트 시스템과 함께 C++에서 사용할 수 있는 다양한 라이브러리와 기능들을 통해 이어지고 있습니다.

좌 : 언리얼 키즈멧(구) / 우 : 언리얼 블루프린트(현) (출처 : docs.unrealengine)

 


 

UKismetSystemLibrary

UKismetSystemLibrary 클래스는 게임 플레이, 디바이스 정보, 레벨 로딩 등 다양한 시스템 관련 기능을 제공합니다. 

추가 헤더
#include "Kismet/KismetSystemLibrary.h"

 

자주 사용하는 함수

PrintString: 디버그 메시지를 화면에 출력합니다.

UKismetSystemLibrary::PrintString(this, TEXT("Hello Unreal!"));


ExecuteConsoleCommand: 콘솔 명령어를 실행합니다 (예시 : fps 표시 실행) . 

UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), TEXT("stat fps"));

 

GetGameTimeInSeconds: 게임이 시작된 이후의 시간(초)을 반환합니다.

float TimeInSeconds = UKismetSystemLibrary::GetGameTimeInSeconds(GetWorld());


Delay: 지정된 시간 동안 실행을 지연시킵니다 (비동기 실행).

UKismetSystemLibrary::Delay(GetWorld(), 5.0f, FLatentActionInfo());

 

QuitGame: 게임을 종료합니다.

UKismetSystemLibrary::QuitGame(GetWorld(), GetPlayerController(), EQuitPreference::Quit, false);

 

IsKeyDown: 특정 키가 눌렸는지 확인합니다.

bool bIsKeyDown = UKismetSystemLibrary::IsKeyDown(GetWorld(), FKey("SpaceBar"));


GetPlatformUserName: 현재 플랫폼에서 사용자의 이름을 가져옵니다.

FString UserName = UKismetSystemLibrary::GetPlatformUserName();


DrawDebugSphere: 디버그용 구체를 그립니다.

UKismetSystemLibrary::DrawDebugSphere(GetWorld(), Location, Radius, 12, FLinearColor::Red, 10.0f, 0.5f);

 


 

UKismetMathLibrary

UKismetMathLibrary 클래스는 수학 계산과 관련된 다양한 유용한 함수들을 제공합니다.

추가 헤더
#include "Kismet/KismetMathLibrary.h"

 

자주 사용하는 함수

FindLookAtRotation : 두 위치 사이의 회전값을 계산합니다.

FRotator LookAtRotation = UKismetMathLibrary::FindLookAtRotation(StartLocation, TargetLocation);


RandomFloatInRange : 지정된 범위 내에서 무작위 실수를 반환합니다.

float RandomFloat = UKismetMathLibrary::RandomFloatInRange(MinFloat, MaxFloat);


VInterpTo : 현재 위치에서 목표 위치로의 부드러운 보간을 계산합니다.

FVector NewLocation = UKismetMathLibrary::VInterpTo(CurrentLocation, TargetLocation, DeltaTime, InterpSpeed);


NormalizeAngle : 각도를 -180과 180 사이의 값으로 정규화합니다.

float NormalizedAngle = UKismetMathLibrary::NormalizeAngle(Angle);


Lerp : 선형 보간을 수행합니다. 시작 값과 끝 값 사이를 비율에 따라 계산합니다.

float Result = UKismetMathLibrary::Lerp(StartValue, EndValue, Alpha);


ClampAngle : 각도를 제한된 범위 내로 조정합니다.

float ClampedAngle = UKismetMathLibrary::ClampAngle(Angle, MinAngle, MaxAngle);


GetDirectionUnitVector : 두 위치 사이의 단위 벡터를 계산합니다.

FVector Direction = UKismetMathLibrary::GetDirectionUnitVector(StartLocation, EndLocation);


InverseLerp : 두 값 사이의 위치를 비율로 반환합니다.

float Alpha = UKismetMathLibrary::InverseLerp(MinValue, MaxValue, Value);


RotateVectorAroundAxis : 벡터를 축을 중심으로 회전시킵니다.

FVector RotatedVector = UKismetMathLibrary::RotateVectorAroundAxis(Vector, Angle, Axis);

 

댓글