본문 바로가기

728x90
728x90

C++

언리얼 엔진 5: Sweep과 Trace 완전 정복 – 차이점, 성능, 실전 예제까지! 게임을 개발하다가 보면 Sweep과 Trace는 충돌 판정에서 자주 사용되는 기능입니다. 하지만 두 방식의 차이와 각각의 장단점, 그리고 실제로 어떻게 활용해야 하는지 헷갈리는 경우가 많죠. 이 글에서는 SweepMultiByProfile의 개념부터 Trace와의 차이, 성능적인 부분까지 초보자도 쉽게 이해할 수 있도록 자세히 설명합니다. 실전에서 바로 활용할 수 있는 예제 코드도 함께 소개하니, 언리얼 엔진 충돌 검사에 대해 제대로 알고 싶으신 분들에게 도움이 될 거예요.1. SweepMultiByProfile이란?SweepMultiByProfile은 언리얼 엔진 5에서 지정한 Collision Profile과 **부피(Shape)**를 사용해, 시작점(Start)에서 끝점(End)까지 3D 공간을 ".. 더보기
C++ 개발 생산성 극대화! 기본값을 지원하는 Getter/Setter 자동 생성 매크로 (수정 및 개선) 개발 효율을 높여줄 팁을 들고 왔습니다. 특히 C++ 개발, 그중에서도 언리얼 엔진(Unreal Engine)을 다루시는 분들이라면 주목해주세요! 반복적인 코딩 작업을 줄여주고 생산성을 확 끌어올려 줄 Getter/Setter 자동 생성 매크로에 대해 이야기해보려 합니다. 왜 이 매크로가 필요할까요?C++로 개발하다 보면 멤버 변수를 선언하고, 그에 대한 Getter/Setter를 만드는 작업은 정말 흔하죠. 여기에 언리얼 엔진에서는 UPROPERTY 매크로를 이용해 변수 속성을 지정하고, 기본값까지 설정해야 합니다. 이 모든 과정을 매번 손으로 타이핑하는 건 시간 낭비이자 오타 발생의 주범이 될 수 있습니다.오늘 소개해 드릴 매크로는 Getter/Setter 자동 생성을 중점적으로 다룹니다. 멤버 변.. 더보기
🎮 [Unreal Engine 5] 액터의 상대 위치를 월드 위치로 변환하는 방법 언리얼 엔진 5(UE5)에서 액터의 상대 위치(Relative Location) 를 월드 위치(World Location) 로 변환하는 방법에 대해 알아보겠습니다.게임을 만들다 보면, 액터를 기준으로 특정 방향이나 거리만큼 떨어진 지점의 절대 좌표가 필요할 때가 많죠.예를 들어, 플레이어 캐릭터 앞쪽 100cm 지점에 이펙트를 생성하고 싶을 때!그럴 땐 이 방법을 쓰면 됩니다 🔧📌 상대 위치 → 월드 위치 변환 함수 (C++)아래는 C++로 작성한 함수입니다.액터를 기준으로 상대 위치를 받아서, 그에 해당하는 월드 위치를 반환해줍니다.FVector ConvertRelativeToWorldLocation(AActor* Actor, const FVector& RelativeLocation){ if .. 더보기
🎮 언리얼 엔진5에서 int64 값을 UE_LOG로 출력하는 방법! 오늘은 언리얼 엔진 5 (Unreal Engine 5, 이하 UE5)에서 int64 타입의 숫자를 로그로 출력하는 방법을 소개할게요.디버깅하면서 큰 숫자를 다뤄야 할 일이 많으신가요?그렇다면 int64 타입 로그 출력법을 꼭 알아두셔야 합니다!🧩 UE_LOG로 int64 출력하기UE5에서는 UE_LOG 매크로를 사용해 로그를 남길 수 있습니다.특히 int64처럼 64비트 정수형 데이터를 출력할 땐, 정확한 포맷 문자열이 필수입니다!✅ 코드 예시:void LogInt64Value(){ int64 MyInt64Value = 123456789012345LL; UE_LOG(LogTemp, Log, TEXT("My int64 value is: %lld"), MyInt64Value);} 📝 코드 설명.. 더보기
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.. 더보기

728x90
728x90