본문 바로가기

728x90
728x90

C++

UE5 구조체에서 operator< 를 오버라이드하여 자동 정렬하는 방법 언리얼 엔진 5 (UE5) 에서 구조체를 사용할 때, 배열을 정렬하는 깔끔한 방법을 소개해 드립니다.특히 자동화 작업(Automation Task) 같은 구조체를 정렬할 때 유용한 팁인데요. 매번 람다식을 쓰지 않고, 아예 구조체 자체에 operator바로 시작해 볼게요 :)기존 방식: Sort() + 람다식 사용하기보통 UE5에서 배열을 정렬할 때는 이렇게 람다식을 사용합니다.TArray AutomationTasks;AutomationTasks.Sort([](const FAutomationTask& A, const FAutomationTask& B) { return A.OperatorOverridePriority  이렇게 하면 OperatorOverridePriority 값을 기준으로 정렬되지만,.. 더보기
언리얼 엔진 5 (UE5) TArray의 Push 와 Pop 은 왜 FILO 인가요? 언리얼 엔진 5 (UE5)를 사용하시면서 헷갈릴 수 있는 TArray의 Push() 와 Pop() 함수가 왜 FILO 방식인지 쉽게 정리해 보겠습니다. 📌 TArray 란?TArray는 UE5에서 제공하는 동적 배열 클래스입니다.쉽게 말해, 우리가 원하는 만큼 데이터를 넣고 뺄 수 있는 가변 길이 배열이라고 볼 수 있어요. 📌 Push() 와 Pop() 의 역할Push(Element)→ 배열의 끝에 요소를 추가합니다.Pop()→ 배열의 마지막 요소를 제거하고 반환합니다.여기서 핵심은, 항상 배열의 뒤쪽(끝)을 기준으로 동작한다는 점이에요! 📌 FILO 란?FILO는 First-In, Last-Out, 즉 먼저 들어온 것이 나중에 나간다는 뜻입니다.쉽게 말해, 스택(Stack) 구조와 동일합니다. 예.. 더보기
언리얼 엔진 5(UE5)에서 캐릭터 위치에서 벡터 그리기 안녕하세요, 언리얼 엔진 5(UE5)에서 캐릭터의 위치를 기준으로 벡터를 그리는 방법을 알려드리겠습니다.디버그 라인을 활용하면 게임 내에서 벡터를 시각적으로 확인할 수 있어, 디버깅이나 개발에 매우 유용합니다.📌 벡터 그리기 함수 만들기아래 코드를 캐릭터 클래스에 추가하면, 현재 캐릭터의 위치에서 특정 방향으로 벡터를 그릴 수 있습니다.void AYourCharacterClass::DrawVector(){ FVector Start = GetActorLocation(); // 캐릭터 위치 가져오기 FVector Direction = GetActorForwardVector(); // 캐릭터가 바라보는 방향 float Length = 300.0f; // 벡터 길이 설정 FVector E.. 더보기
언리얼 엔진 5 (UE5) FRotator → FQuat 변환 방법 언리얼 엔진 5(UE5)에서 FRotator를 **FQuat(Quaternion, 사원수)**로 변환하는 방법을 소개해드립니다.1. FRotator를 FQuat로 변환하기 (C++ 코드)아래 코드에서는 FRotator를 FQuat로 변환하는 방법을 보여줍니다.FRotator Rotation(0.0f, 90.0f, 0.0f); // 예제 회전 값 (Pitch, Yaw, Roll)FQuat QuatRotation = Rotation.Quaternion(); // FQuat 변환// 변환된 FQuat 값 출력 (디버깅 용도)UE_LOG(LogTemp, Log, TEXT("Quat: X=%f, Y=%f, Z=%f, W=%f"), QuatRotation.X, QuatRotation.Y, QuatRotation.Z.. 더보기
언리얼 엔진 5 (UE5) 에서 캐릭터와 액터 사이의 가장 가까운 점 구하기 (C++ 코드) 안녕하세요! 언리얼 엔진 5 (UE5)에서 캐릭터와 다른 액터 사이의 가장 가까운 점을 구하는 C++ 코드를 소개하고 자세하게 설명드리겠습니다. 이전에는 가장 가까운 액터를 찾는 방법을 알아보았다면, 이번에는 특정 액터의 콜리전 메시에서 캐릭터와 가장 가까운 점의 좌표를 정확하게 얻는 방법을 다룹니다.핵심 개념: UPrimitiveComponent 와 GetClosestPointOnCollision()이 기능을 구현하는 핵심은 UPrimitiveComponent와 GetClosestPointOnCollision() 함수를 사용하는 것입니다. 모든 액터가 콜리전을 가지는 것은 아니기 때문에, 먼저 액터가 콜리전 컴포넌트를 가지고 있는지 확인하는 것이 중요합니다.C++ 코드// 캐릭터의 헤더 파일 (.h)#.. 더보기
UE5 네트워크 최적화 : Net Cull Distance 분석 및 설정(코드 예제 수정) Net Cull Distance는 플레이어와 액터 간의 거리에 따라 네트워크 복제를 제어하여 불필요한 네트워크 트래픽을 줄이는 핵심적인 기능입니다. 이번 가이드에서는 개념 설명뿐만 아니라, 블루프린트와 C++ 코드 예제를 추가하여 더욱 실질적인 도움을 드리고자 합니다.1. Net Cull Distance란 무엇일까요?Net Cull Distance는 액터가 특정 클라이언트에 복제되는 최대 거리를 의미합니다. 플레이어로부터 설정된 거리 이상 멀리 떨어진 액터는 해당 플레이어에게 네트워크 업데이트를 전송하지 않게 됩니다. 이는 특히 맵에 많은 액터가 존재하는 경우 네트워크 부하를 크게 줄여 게임의 전반적인 성능을 향상시키는 데 매우 효과적입니다.2. UE5 에디터에서 Net Cull Distance 설정하기.. 더보기
언리얼 엔진 5 (UE5)에서 월드 시간과 델타 시간 초 단위로 얻기 (C++ 및 블루프린트) 언리얼 엔진 5 (UE5) 게임 개발에서 시간 관리는 매우 중요합니다. 게임이 시작된 이후 경과된 시간이나 프레임 간 시간 간격인 델타 시간을 정확하게 얻는 것은 게임 로직, 애니메이션, 타이머 등 다양한 기능을 구현하는 데 필수적입니다. 이 글에서는 C++ 코드와 블루프린트를 사용하여 UE5에서 월드 시간과 델타 시간을 초 단위로 얻는 방법을 자세히 설명합니다.1. 월드 시간 (World Time) 얻기월드 시간은 게임이 시작된 이후 경과된 총 시간을 의미합니다. UE5에서는 UWorld::GetTimeSeconds() 함수를 사용하여 이 값을 초 단위로 얻을 수 있습니다.1.1 C++ 코드#include "Kismet/GameplayStatics.h"#include "Engine/World.h"UFU.. 더보기
UE5에서 두 벡터 사이의 각도 구하기 (자세한 설명 + 내적의 의미) 게임 개발을 하다 보면 두 벡터 사이의 각도를 구해야 하는 경우가 종종 있습니다.예를 들어, 적 AI가 플레이어를 시야 내에 두고 있는지 확인하거나,물체의 반사 각도를 계산하거나, 조준 시스템을 구현할 때 이러한 계산이 필요합니다.언리얼 엔진 5(UE5)에서 두 벡터 사이의 각도를 구하는 방법을 자세히 알아보고, 특히 내적의 결과값이 가지는 의미에 대해 심도있게 다뤄보겠습니다.1. 내적 (Dot Product) 그리고 그 의미두 벡터의 내적은 단순히 계산 이상의 중요한 의미를 지닙니다. 두 벡터가 얼마나 같은 방향을 향하고 있는지를 수치적으로 나타내는 척도이며, 다음과 같은 의미를 내포합니다.유사성 측정: 내적의 절대값이 클수록 두 벡터는 비슷한 방향을 가리킵니다. 즉, 유사성이 높다고 할 수 있습니다... 더보기

728x90
728x90