[ Unreal5 ]/- 언리얼엔진5 실습221 언리얼엔진5 BehaviorTree, EQS 응용 ▣ Wait Wait Time설명: 이 노드가 실행되었을 때 얼마나 기다릴지를 초 단위로 설정합니다.예: 3.0으로 설정하면, AI는 이 노드에서 3초 동안 대기합니다. ▣ Random Deviation설명: 설정된 Wait Time에 무작위로 더해질 수 있는 시간의 최대값입니다.예: Wait Time이 3.0이고, Random Deviation이 1.0이면, 실제 대기 시간은 3.0~4.0초 사이가 됩니다. ▣ Task Ignore Restart Self설명: 이 옵션은 Behavior Tree가 자기 자신을 다시 시작할 때 이 Task를 무시할지 여부를 결정합니다.체크 시: 트리가 다시 시작될 때 이 노드는 건너뜁니다.일반적으로 이 옵션은 루프가 있는 Behavior Tree에서 무한 대기를 방지하는.. 2025. 4. 5. 언리얼엔진5 c++ 플레이어 방향으로 수평 회전 ▣ 플레이어의 Pawn을 가져오는 부분 UGameplayStatics::GetPlayerPawn(...)는 현재 월드에 존재하는 0번 인덱스의 플레이어 컨트롤러가 조종하는 Pawn을 반환합니다.0 → 기본 싱글플레이어라면 첫 번째 플레이어결과: PlayerPawn 변수에 플레이어 액터가 저장됩니다. ▣ 서로의 현재 위치를 가져옴 GetActorLocation() → Actor의 현재 월드 좌표를 반환합니다.ZombieLocation: 좀비의 위치PlayerLocation: 플레이어의 위치 ▣ 방향벡터 계산 (수평 2D 기준) Player - Zombie: → 좀비에서 플레이어까지 향하는 방향벡터GetSafeNormal2D():이 벡터를 정규화(Normalize) 하되,Z 축(높이)은 무시하고 XY 평면 .. 2025. 4. 5. 언리얼엔진5 c++ AI 간의 충돌 방지 코드 ▣ MoveRequest는 AI가 어디로 어떻게 움직 일지를 정의하는 이동 요청 정보 구조체입니다. ▣ SetGoalLocation(FVector InLocation) MoveRequest.SetGoalLocation(TargetLocation); 이동 목표 지점을 설정합니다. InLocation은 FVector로, AI가 도달해야 할 실제 좌표입니다. MoveToLocation(...)을 쓰는 방식에서는 이 값이 필수입니다.중요: 이 값이 없다면 AI는 어디로 이동할지 모릅니다. ▣ SetAcceptanceRadius(float Radius)MoveRequest.SetAcceptanceRadius(10.0f); 목표 위치에 얼마나 가까이 도달하면 "도착"으로 간주할지를 설정합니다.단위는 cm입니다.예:.. 2025. 3. 29. 언리얼엔진5 c++ Animistance 데이터 ABP에서 바인딩 사용 ▣ AnimInstance에 만든 데이터를 ABP에서 바인딩해서 사용가능하고 상속관계인 클래스에서 AnimInstance에 값을 전달해서 바인딩 가능합니다. 2025. 3. 27. 언리얼엔진5 c++ Random함수 ▣ 함수설명FMath::Rand() - C의 rand() 함수 기반. 0~RAND_MAX 사이의 난수를 반환. - 주의: 정확한 범위 제어가 어려움. FMath::RandRange(Min, Max) - 가장 많이 사용되는 함수! - 정수 범위 내에서 원하는 구간을 정확히 지정 가능. FMath::FRand() - 부동소수점 난수. 주로 확률 계산에 사용 (ex. 0.3 FMath::FRandRange(Min, Max) - 부동소수점 범위에서도 원하는 구간을 랜덤하게. FMath::RandBool() - true/false를 50% 확률로 반환. 동전 던지기 같은 상황에서 자주 사용됨. FMath::RandHelper(Max) - 0 ~ Max - 1의 랜덤 정수를 생성. - 배열에서 인덱스를 랜덤 선택할.. 2025. 3. 27. 언리얼엔진5 c++ EndPlay(Actor 종료시점 호출함수) ▣ AActor::EndPlay()란? EndPlay()는 액터가 월드(World)에서 제거될 때 호출되는 가상 함수(virtual function)입니다. - 언제 호출되나요? 액터가 Destroy() 되었을 때 레벨이 언로드(unload)되거나 리셋될 때 게임이 종료되거나 플레이 세션이 끝날 때 PIE(Play In Editor) 모드에서 Stop을 누를 때 ▣ 함수 구조 정리부분설명Super::EndPlay(EndPlayReason)부모 액터의 정리 로직을 먼저 실행 (필수!)GetController()이 캐릭터를 제어하는 컨트롤러 가져오기Cast()AI 전용 컨트롤러로 캐스팅AIController->BrainComponentAI의 두뇌 역할을 하는 컴포넌트, 보통 Behavior Tree를 실행.. 2025. 3. 22. 언리얼엔진5 c++ FindFunction ▣ TArray FoundDoors; UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::StaticClass(), FoundDoors);- FoundDoors라는 TArray 배열을 생성합니다. UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::StaticClass(), FoundDoors); 현재 World에 존재하는 모든 AActor 타입의 액터를 검색하여 FoundDoors 배열에 저장합니다. - AActor::StaticClass()는 모든 액터의 부모 클래스이므로, 모든 액터가 포함됩니다. 만약 특정 클래스의 액터만 찾고 싶다면 AActor::StaticClass() 대신 해당 클래스(A.. 2025. 3. 5. 언리얼엔진5 meta ▣ meta 속성설명BindWidgetUMG 위젯을 C++ 변수에 자동 바인딩AllowPrivateAccessprivate 변수를 블루프린트에서 접근 가능하게 함ClampMin, ClampMax변수 값의 최소/최대 제한EditCondition특정 변수가 true일 때만 편집 가능DisplayName언리얼 에디터에서 표시될 변수명 변경Tooltip변수 설명 추가UIMin, UIMaxUI에서 슬라이더 범위 설정OverrideNativeName블루프린트에서 변수 이름 변경BindWidgetOptional위젯 바인딩이 선택적일 때 사용ForceInlineRowUI에서 같은 줄에 표시Categories블루프린트에서 변수 카테고리 설정WorldContext블루프린트 함수에서 월드 컨텍스트 필요CompactNodeT.. 2025. 3. 4. 언리얼엔진5 c++ virtual, override ▣ 부모 클래스에서 virtual을 사용하면 자식 클래스에서 재정의(Override) 가능 virtual을 사용하지 않으면 부모 클래스의 함수만 호출됨 ▣ override 키워드는 부모의 가상 함수를 정확히 재정의(Overriding)하는지 확인하는 역할을 합니다. ▣ 추상 클래스(Abstract Class)를 활용하여, 강제적으로 자식 클래스에서 함수 재정의하도록 만듭니다. 2025. 2. 8. 언리얼엔진5 c++ Class, 생성자, 기본멤버함수 ▣ 클래스 (Class)클래스는 객체를 생성하는 템플릿(설계도)이다. 멤버 변수(속성)와 멤버 함수(기능)로 구성됨. 생성자(Constructor)를 이용해 멤버 변수를 초기화할 수 있음. ▣ 생성자(Constructor)가 가장 먼저 실행됩니다. ▣ BeginPlay()가 게임이 시작될 때 한 번 호출됩니다. ▣ Tick(float DeltaTime)이 프레임마다 실행되며 메시지가 출력됩니다. ▣ 소멸자(Destructor)가 실행되며 객체가 메모리에서 해제됩니다. ▣ 상속하여 자식 클래스를 활용하여 부모클래스 함수를 호출해서 사용 가능 2025. 2. 8. 언리얼엔진5 c++ int32 타입의 숫자를 FText로 변환 ▣ SetText(FText) : UTextBlock의 텍스트를 설정하는 함수▣ FText::AsNumber(int32 Value) : int32 타입의 숫자를 FText로 변환하는 함수▣ 즉, MedicineMap[EMedicineType::Drink] (현재 음료 개수)를 FText로 변환한 후 DrinkCountTextBlock에 설정합니다. 2025. 1. 31. 언리얼엔진5 c++ 몇 초 뒤 OpenLevel ▣ FTimerHandle DoorTimer FTimerHandle은 Unreal Engine의 타이머를 관리하기 위한 핸들입니다.역할: 타이머를 식별하고, 특정 타이머를 취소하거나 재설정할 때 사용됩니다. 이 코드에서는 DoorTimer라는 이름의 타이머 핸들을 생성했습니다. 예시 사용법: 타이머 취소: GetWorld()->GetTimerManager().ClearTimer(DoorTimer); 타이머 상태 확인: GetWorld()->GetTimerManager().IsTimerActive(DoorTimer);▣ GetWorld()->GetTimerManager().SetTimer SetTimer는 타이머를 설정하여 특정 시간이 지난 후에 함수를 실행하거나 반복 실행하게 만듭니다. ▣ GetWor.. 2025. 1. 24. 언리얼엔진5 Blueprint BGM 재생, 정지 ▣ Audio Component 추가 및 초기화블루프린트에 Audio Component를 추가합니다. 소리를 재생하고 페이드 아웃 타이밍을 설정합니다.Fade Out 함수 노드아래 노드를 연결합니다:Fade Out Duration: 페이드 아웃에 걸릴 시간 (초 단위). 2025. 1. 24. 언리얼엔진5 c++ GetMapName UEDPIE_0_ 제거 ▣ 코드 설명 LevelName:World->GetMapName()을 통해 현재 레벨 이름을 가져옵니다. 접두사가 포함된 상태의 원본 이름입니다.원본이름 : UEDPIE_0_TutorialsMapPrefix:World->StreamingLevelsPrefix를 사용하여 접두사를 확인합니다. 이 값은 접두사가 없을 경우 빈 문자열이 될 수도 있습니다.접두사 : UEDPIE_0_StartsWith():StartsWith(Prefix): 레벨 이름이 Prefix로 시작하는지 확인합니다.레벨 이름이 접두사로 시작하는지 확인합니다. 접두사가 포함된 경우, 이를 RightChop(Prefix.Len())으로 제거합니다. RightChop(Prefix.Len()): 접두사의 길이만큼 문자열을 잘라냅니다. ▣ 결과: .. 2025. 1. 23. 언리얼엔진5 c++ ActorName Find 문자제거 ▣ 코드 분석 Hit.GetActor()->GetName()충돌된 액터의 이름을 가져옵니다. 이름은 FString 형식으로 반환됩니다. ▣ GetName설명:UObject의 이름을 반환하는 함수입니다.이름은 FString 형식으로 반환되며, 이는 해당 객체가 엔진 내에서 사용되는 고유 이름입니다.사용 예시:FString Name = Hit.GetActor()->GetName();주요 활용:디버깅 시 객체 이름 확인.이름을 기반으로 객체 필터링 또는 분류. ▣ LeftChop설명:문자열의 끝에서 지정한 길이만큼 제거하여 새로운 문자열을 반환합니다.사용 예시:FString Result = ItemName.LeftChop(3); // 끝에서 3글자 제거주요 활용:특정 패턴의 끝 부분을 제거하여 필요한 부분만 .. 2025. 1. 22. 언리얼엔진5 c++ CanvasPanel ▣ .h, .cpp 코드에 헤더를 추가합니다. ▣ .h 헤더파일에 UCanvasPanel을 선언합니다. ▣ HUDWidget: UI를 관리하는 UUserWidget의 인스턴스를 가리킵니다. CreateWidget: 새로운 UUserWidget 인스턴스를 생성합니다. GetWorld()->GetFirstPlayerController(): 현재 월드에서 첫 번째 플레이어 컨트롤러를 가져옵니다. HUDClass: 블루프린트나 C++로 정의된 HUD 위젯 클래스입니다. 목적: HUDWidget이 아직 생성되지 않았다면, CreateWidget을 통해 생성합니다. ▣ HUDWidget->IsInViewport(): HUDWidget이 현재 화면에 추가되었는지 확인합니다. HUDWidget->AddToView.. 2025. 1. 13. 언리얼엔진5 Pain Causing Volume (함정, 불, 발판 데미지 볼륨) ▣ 먼저 Pain Causing Volume을 추가합니다. ▣ 디테일탭에서 필요한 값을 조절합니다.Pain Causing 피해 유발 - 볼륨이 현재 대미지를 입힐지 말지입니다. Damage Per Sec 초당 대미지 - Pain Causing 이 켜져 있을 때 볼륨에 있는 액터에게 입히는 초당 대미지입니다. Damage Type 대미지 유형 - 액터에 가해지는 대미지 유형을 나타냅니다. Pain Interval Pain Causing 이 켜졌을 때 대미지가 적용되는 초단위 간격입니다. Entry Pain 진입 피해 - Pain Causing 이 켜진 볼륨에 들어설 때 Pain Interval 에 따른 지속 대미지에 추가로 즉시 적용할 대미지를 나타냅니다. ▣ 충돌한 대상 Player에 Event Da.. 2025. 1. 13. 언리얼엔진5 Blueprint Camera Zoom ▣ Timeline을 활용해서 0.3초에 0->1 값으로 Alpha이 바뀌는데 이걸 활용해서 카메라 줌과 위치를 변경하는 블루프린트 노드 제작했습니다. 2025. 1. 11. 언리얼엔진5 일정 시간 후 호출함수(람다 함수) ▣ FTimerHandle HitSoundDelayHandle 타이머 핸들(Handle): 이 변수는 타이머를 식별하는 데 사용됩니다. 특정 타이머를 관리하거나 중지(ClearTimer)하기 위해 필요합니다. FTimerHandle은 FTimerManager와 함께 작동하며, 타이머 설정, 실행, 삭제 등을 처리합니다. ▣ GetWorld()->GetTimerManager() 타이머 매니저(Timer Manager): GetTimerManager()는 타이머를 관리하는 클래스인 FTimerManager에 접근하는 함수입니다. 이를 통해 타이머를 생성, 시작, 정지, 리셋할 수 있습니다. GetWorld() 함수는 현재 월드의 포인터를 반환하며, 이를 통해 타이머 매니저를 사용할 수 있습니다. ▣ SetT.. 2024. 12. 20. 언리얼엔진5 Texture 성능최적화 ▣ LODBias 개념: 텍스처의 LOD(Level of Detail)를 조정하여 해상도를 단계적으로 낮추는 값입니다. 원래 텍스처의 해상도에서 한 단계씩 낮춰서 렌더링에 사용됩니다. 작동 원리 LODBias = 0: 텍스처의 원래 해상도 사용 (기본값). LODBias = 1: 텍스처 해상도를 절반으로 줄임 (예: 2048x2048 → 1024x1024). LODBias = 2: 텍스처 해상도를 4분의 1로 줄임 (예: 2048x2048 → 512x512).효과 메모리 사용량 감소: 해상도를 줄이므로 GPU 메모리 사용량이 줄어듭니다. 성능 향상: 낮은 해상도 텍스처를 사용하면 렌더링 속도가 향상됩니다. 품질 저하: 과도하게 LODBias 값을 높이면 텍스처가 흐릿하게 보일 수 있습니다. ▣ Maxi.. 2024. 12. 18. 언리얼엔진5 Material Base ▣ Base Color는 Unreal Engine의 PBR(Physically Based Rendering) 머티리얼 시스템에서 사용되는 핵심 속성 중 하나로, 재질의 기본 색상을 정의합니다. 표면의 고유 색상을 나타내며, 조명과 반사광의 영향을 받습니다. ▣ Metallic은 Unreal Engine의 PBR(Physically Based Rendering) 시스템의 주요 속성 중 하나로, 재질이 금속성을 얼마나 띄는지를 결정하는 파라미터입니다. 이 값은 0.0 ~ 1.0 사이의 값을 가지며, 재질의 시각적 특성에 큰 영향을 줍니다. 0.0 (비금속)재질이 금속적이지 않은 표면입니다. 예시: 나무, 돌, 흙, 플라스틱 등의 재질. 이런 재질은 Diffuse(확산광)와 Specular(반사광)를 모두 .. 2024. 12. 17. 이전 1 2 3 4 ··· 11 다음